黑马程序员匠心之作|C++教程从0到1入门编程

关于P72~P83-练习-通讯录管理系统

  • 1、系统功能介绍
  • 2、创建项目
  • 3、菜单功能
  • 4、退出功能实现
  • 5、添加联系人-结构体设计
  • 6、添加联系人-功能实现
  • 7、显示联系人
  • 8、删除联系人-检测联系人是否存在
  • 9、删除联系人-功能实现
  • 10、查找联系人
  • 11、修改联系人
  • 12、清空联系人
  • 至此,通讯录管理系统完成,后面部分非课程内,是本人尝试所得
  • 13、项目发布、打包成可安装部署的应用程序
  • 14、通讯录管理系统Demo的安装
  • 15、项目资源及应用程序资源

1、系统功能介绍

系统需求
通讯录是一个可以记录亲人、好友信息的工具。本教程主要利用C++来实现一个通讯录管理系统系统中需实现的功能如下:
1、添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记 1000人
2、显示联系人:显示通讯录中所有联系人信息
3、删除联系人:按照姓名进行删除指定联系人
4、查找联系人:按照姓名查看指定联系人信息
5、修改联系人:按照姓名重新修改指定联系人
6、清空联系人:清空通讯录中所有信息
7、退出通讯录:退出当前使用的通讯录

2、创建项目

打开vs之后,点击创建新项目,创建新的c++项目。


3、菜单功能

菜单界面效果如下:

步骤:
1、封装函数显示该界面,如:void showMenu()
2、在main函数中调用封装好的函数

#include<iostream>
using namespace std;//1、封装函数显示该界面,如:`void showMenu()`
//菜单界面
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()
{ //2、在main函数中调用封装好的函数//菜单调用showMenu();system("pause");return 0;
}

4、退出功能实现

思路:根据用户不同的选择,进入不同功能,可以选择switch分支结构,将整个框架进行搭建。
当用户选择0的时候,执行退出,选择其他先不做操作,也不会退出程序。

#include<iostream>
using namespace std;//菜单界面
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 = 0;//创建用户选择输入的变量while (true){//菜单调用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;break;default:break;}}system("pause");return 0;
}

while()的作用
没加之前,输入1~6都会显示“请按任意键继续……”,是由于最结尾处的system("pause");return 0;
加入后,只有在输入0时,才会显示“请按任意键继续……”,且按后退出;按其他键仍旧显示菜单目录。

5、添加联系人-结构体设计

添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记 1000人
实现步骤
1、设计联系人结构体
2、设计通讯录结构体
3、main函数中创建通讯录
4、封装添加联系人函数
5、测试添加联系人功能

#define MAX 1000 //最大人数
//联系人结构体
//信息包括(姓名、性别、年龄、联系电话、家庭住址)
struct person
{string m_Name;//姓名int m_Sex;//性别:1男 2女int m_Age;//年龄string m_Phone;//联系电话string m_Addr;//
};//通讯录结构体
struct Addressbooks
{struct person personArry[MAX]; //通讯录中保存的联系人数组int m_Size;//通讯录中人员个数
};

6、添加联系人-功能实现

实现步骤
1、设计联系人结构体
2、设计通讯录结构体
3、main函数中创建通讯录
4、封装添加联系人函数
5、测试添加联系人功能

//main函数起始位置添加://创建通讯录结构体变量struct Addressbooks abs;//初始化通讯录中当前人员个数abs.m_Size = 0;
//封装添加联系人函数
//判断通讯录是否已满,满了不再添加,未满情况将联系人信息逐个加入到通讯录
//添加联系人函数
void addPerson(struct Addressbooks  * abs)
{//判断通讯录是否已满,满了就不再添加if (abs->m_Size == MAX){cout << "通讯录已满,无法添加!" << endl;return ;}else{//添加具体联系人//姓名string name;cout << "请输入姓名:"<< endl;cin >> name;abs->personArry[abs->m_Size].m_Name = name;//性别int sex = 0;cout << "请输入性别:" << endl;cout << "1 --- 男:" << endl;cout << "2 --- 女:" << endl;cin >> sex;//输入对了,退出循环//输入错了,一直输入while (true){//cin >> sex;//错误位置,加在这里需要输入两次if (sex == 1 || sex == 2){abs->personArry[abs->m_Size].m_Sex = sex;break; //输入对了,存后退出}cout << "输入错误,请重新输入性别" << endl;cin >> sex;//正确位置,输入的不对就一直输}//年龄int age = 0;cout << "请输入年龄:" << endl;cin >> age;while (true){//cin >> sex;//错误位置,加在这里需要输入两次if (age > 0 && age < 150){abs->personArry[abs->m_Size].m_Age = age;break; //输入对了,存后退出}cout << "输入错误,请重新输入年龄" << endl;cin >> age;//正确位置,输入的不对就一直输}//电话string phone;cout << "请输入电话:" << endl;cin >> phone;abs->personArry[abs->m_Size].m_Phone = phone;//住址string address;cout << "请输入住址:" << endl;cin >> address;abs->personArry[abs->m_Size].m_Addr = address;//更新通讯录人数abs->m_Size++;cout << "添加成功" << endl;system("pause");//请按任意键继续system("cls");//清屏操作}
}
//main函数switch (select)中case 1变为:case 1://1、添加联系人 //addPerson(abs); //值传递,不改变实参,无法增加addPerson(&abs);//利用地址传递,可以修改实参break;


清屏操作后,返回主菜单。

7、显示联系人

步骤
1、封装显示联系人函数
2、测试显示联系人功能

//显示所有联系人函数
void showPerson(struct Addressbooks * abs)
{//判断通讯录中是否为0//如果为0,提示记录为空//如果不为0,显示记录的联系人信息if (abs->m_Size == 0){cout << "当前的记录为空" << endl;}else{for (int i = 0;i < abs->m_Size;i++){cout << "姓名:" << abs->personArry[i].m_Name << "\t"<< "性别:" << (abs->personArry[i].m_Sex == 1 ? "男":"女" )<< "\t"<< "年龄:" << abs->personArry[i].m_Age << "\t"<< "联系电话:" << abs->personArry[i].m_Phone << "\t"<< "家庭地址:" << abs->personArry[i].m_Addr << endl;}}system("pause");//请按任意键继续system("cls");//清屏操作
}
//main函数switch (select)中case 2变为:case 2://2、显示联系人showPerson(&abs);break;



8、删除联系人-检测联系人是否存在

步骤
1、封装检测联系人是否存在
2、封装删除联系人函数
3、测试删除联系人功能
设计思路
删除联系人前,我们需要先判断用户输入的联系人是否存在,如果存在删除,不存在提示用户没有要删除的联系人。因此,我们可以把检测联系人是否存在封装成一个函数中,如果存在,返回联系人在通讯录中的位置,不存在返回-1。

//检测联系人是否存在
//如果存在,返回联系人所在数组具体位置;如果不存在,返回-1
int isExist(struct Addressbooks * abs,string name)
{for(int i=0;i<abs->m_Size;i++){//找到用户输入的姓名了if (abs->personArry[i].m_Name==name){ return i;//找到了,返回这个人在数组中的下标编号}}return -1;//如果遍历后,没找到用户输入的姓名,返回-1system("pause");//请按任意键继续system("cls");//清屏操作
}
//main函数switch (select)中case 3变为:
case 3://3、删除联系人{ //不加大括号,switch就会底下有红色波浪线cout << "请输入删除联系人姓名:" << endl;string name;cin >> name;if (isExist(&abs, name) == -1){cout << "查无此人" << endl;}else{cout << "找到了" << endl;}}break;




注意:如果不把case3中break前代码用{}括起来,switch底下有红色波浪线,因为代码过长。

9、删除联系人-功能实现

步骤
1、封装检测联系人是否存在
2、封装删除联系人函数
3、测试删除联系人功能
根据用户输入的联系人判断通讯录中是否有人
查找到进行删除,并提示删除成功
查不到提示查无此人

//删除指定联系人
void delectPerson(struct Addressbooks * abs)
{cout << "请输入删除联系人姓名:" << endl;string name;cin >> name;int ret = isExist(abs, name);if (ret == -1){cout << "查无此人" << endl;}else{   //查到此人,进行删除操作int i = ret;//要删除i,将i后所有数据进行前移,并让通讯录中人员个数-1for (;i < abs->m_Size;i++){//数据前移abs->personArry[i].m_Name = abs->personArry[i + 1].m_Name;abs->personArry[i].m_Sex = abs->personArry[i + 1].m_Sex;abs->personArry[i].m_Age = abs->personArry[i + 1].m_Age;abs->personArry[i].m_Phone = abs->personArry[i + 1].m_Phone;abs->personArry[i].m_Addr = abs->personArry[i + 1].m_Addr;}abs->m_Size--;//更新通讯录中人员数cout << "删除成功" << endl;}system("pause");system("cls");
}
//main函数switch (select)中case 3变为:
case 3://3、删除联系人//{ //不加大括号,switch就会底下有红色波浪线//   cout << "请输入删除联系人姓名:" << endl;//   string name;//  cin >> name;//    if (isExist(&abs, name) == -1)//  {//     cout << "查无此人" << endl;// }// else//  {//     cout << "找到了" << endl;//  }//}delectPerson( &abs);break;



10、查找联系人

步骤:
1、封装查找联系人函数
2、测试查找指定联系人

//查找联系人
void findPerson(struct Addressbooks * abs)
{cout << "请输入您想要查找的联系人:" << endl;string name;cin >> name;int ret = isExist(abs, name);if (ret == -1){cout << "查无此人" << endl;}else{   //查到此人,进行显示操作int i = ret;cout << "姓名:"<< abs->personArry[i].m_Name <<"\t";cout << "性别:" << abs->personArry[i].m_Sex << "\t";cout << "年龄:" << abs->personArry[i].m_Age << "\t";cout << "联系方式:" << abs->personArry[i].m_Phone << "\t";cout << "地址:" << abs->personArry[i].m_Addr << endl;}system("pause");system("cls");
}
//main函数switch (select)中case 4变为:
case 4://4、查找联系人findPerson(&abs);break;

注意:功能2显示所有联系人,功能4只显示你查找的联系人

11、修改联系人

步骤:
1、封装修改联系人函数
2、测试修改指定联系人

//修改联系人
void modifyPerson(struct Addressbooks *abs)
{cout << "请输入您想要修改的联系人:" << endl;string name;cin >> name;int ret = isExist(abs, name);if (ret == -1){cout << "查无此人" << endl;}else{   //查到此人,进行修改操作//姓名int i = ret;string name;cout << "请输入姓名:" << endl;cin >> name;abs->personArry[i].m_Name = name;//性别int sex = 0;cout << "请输入性别:" << endl;cout << "1 --- 男:" << endl;cout << "2 --- 女:" << endl;cin >> sex;//输入对了,退出循环//输入错了,一直输入while (true){//cin >> sex;//错误位置,加在这里需要输入两次if (sex == 1 || sex == 2){abs->personArry[i].m_Sex = sex;break; //输入对了,存后退出}cout << "输入错误,请重新输入性别" << endl;cin >> sex;//正确位置,输入的不对就一直输}//年龄int age = 0;cout << "请输入年龄:" << endl;cin >> age;while (true){//cin >> sex;//错误位置,加在这里需要输入两次if (age > 0 && age < 150){abs->personArry[i].m_Age = age;break; //输入对了,存后退出}cout << "输入错误,请重新输入年龄" << endl;cin >> age;//正确位置,输入的不对就一直输}//电话string phone;cout << "请输入电话:" << endl;cin >> phone;abs->personArry[i].m_Phone = phone;//住址string address;cout << "请输入住址:" << endl;cin >> address;abs->personArry[i].m_Addr = address;cout << "修改成功" << endl;}system("pause");system("cls");}
//main函数switch (select)中case 5变为:
case 5://5、修改联系人modifyPerson(&abs);break;



12、清空联系人

步骤
1、封装清空联系人函数
2、测试清空指定联系人
思路
将通讯录中所有联系人信息删除,只要将通讯录记录人数置为0,做逻辑清空即可。

//删除所有联系人
void cleanPerson(struct Addressbooks *abs)
{cout << "是否确认清空?" << endl;cout << "1 --- 是" << endl;cout << "2 --- 否" << endl;int a;cin >> a;if (a == 1){abs->m_Size = 0;//将当前记录联系人数量置为0,做逻辑上的清空操作cout << "通讯录已清空" << endl;}system("pause");system("cls");
}
//main函数switch (select)中case 6变为:
case 6://6、清空联系人cleanPerson(&abs);break;



至此,通讯录管理系统完成,后面部分非课程内,是本人尝试所得

13、项目发布、打包成可安装部署的应用程序

1、在要通讯录管理系统项目的解决方案 右键→添加→ 新建项目

2、安装Visual Studio Installer (如果已经存在 Visual Studio Installer,直接跳往第3步)

左侧安装和部署底下没有Visual Studio Installer 说明没有安装打包插件,如果按确定的话会弹出以下界面

安装打包插件:Microsoft Visual Studio 2015 Installer Projects
方法1:点击链接Microsoft Visual Studio 2015 Installer Projects,进行下载
方法2:工具 --> 扩展和更新 --> 联机,搜索Microsoft Visual Studio 2017 Installer Projects

下载并安装,安装过程简单,不再详述

安装好以后,重启vs2017
3、回到我们的新建项目,选择其他项目类型 --> Visual Studio Installer --> Setup Project --> 输入Setup --> 确定

4、在出现的界面中,右键Application Folder → Add → 项目输出然后选择 主输出 点击确定


5、右键【主输出from 通讯录管理系统】 选择 Create Shortcut to… 生成快捷方式。

7、修改快捷方式的名称为通讯录管理系统Demo,并拖入 User‘s Desktop


8、右键 setup project,选择生成


9、生成成功后,打开所在文件夹就可以看到生成后的安装文件



10、在通讯录管理系统Demo\Debug中可以看到
一个exe,一个msi。

msi是重点,可直接安装在Windows中。

exe是需要调用msi文件的。

14、通讯录管理系统Demo的安装

1、在通讯录管理系统Demo\Debug中可以看到,一个exe,一个msi。双击.msi文件进行安装

2、点击下一步

3、选择安装位置

4、确认安装
5、安装成功后桌面显示图标

6、双击图标可进行操作

15、项目资源及应用程序资源

1、通讯录管理系统-项目资源
链接:https://pan.baidu.com/s/19HNO7kWwXEjjG5zzxbXSpA
提取码:bm2e
2、通讯录管理系统Demo-可安装部署的应用程序
链接:https://pan.baidu.com/s/1S44-1Ujl_2D1MmFclKILaA
提取码:v1zm
3、通讯录管理系统-源码

#include<iostream>
#include<string>
using namespace std;#define MAX 1000 //最大人数
//联系人结构体
//信息包括(姓名、性别、年龄、联系电话、家庭住址)
struct person
{string m_Name;//姓名int m_Sex;//性别:1男 2女int m_Age;//年龄string m_Phone;//联系电话string m_Addr;//
};//通讯录结构体
struct Addressbooks
{struct person personArry[MAX]; //通讯录中保存的联系人数组int m_Size;//通讯录中人员个数
};//1、添加联系人
void addPerson(struct Addressbooks  * abs)
{//判断通讯录是否已满,满了就不再添加if (abs->m_Size == MAX){cout << "通讯录已满,无法添加!" << endl;return ;}else{//添加具体联系人//姓名string name;cout << "请输入姓名:"<< endl;cin >> name;abs->personArry[abs->m_Size].m_Name = name;//性别int sex = 0;cout << "请输入性别:" << endl;cout << "1 --- 男:" << endl;cout << "2 --- 女:" << endl;cin >> sex;//输入对了,退出循环//输入错了,一直输入while (true){//cin >> sex;//错误位置,加在这里需要输入两次if (sex == 1 || sex == 2){abs->personArry[abs->m_Size].m_Sex = sex;break; //输入对了,存后退出}cout << "输入错误,请重新输入性别" << endl;cin >> sex;//正确位置,输入的不对就一直输}//年龄int age = 0;cout << "请输入年龄:" << endl;cin >> age;while (true){//cin >> sex;//错误位置,加在这里需要输入两次if (age > 0 && age < 150){abs->personArry[abs->m_Size].m_Age = age;break; //输入对了,存后退出}cout << "输入错误,请重新输入年龄" << endl;cin >> age;//正确位置,输入的不对就一直输}//电话string phone;cout << "请输入电话:" << endl;cin >> phone;abs->personArry[abs->m_Size].m_Phone = phone;//住址string address;cout << "请输入住址:" << endl;cin >> address;abs->personArry[abs->m_Size].m_Addr = address;//更新通讯录人数abs->m_Size++;cout << "添加成功" << endl;}system("pause");//请按任意键继续system("cls");//清屏操作
}
//2、显示所有联系人
void showPerson(struct Addressbooks * abs)
{//判断通讯录中是否为0//如果为0,提示记录为空//如果不为0,显示记录的联系人信息if (abs->m_Size == 0){cout << "当前的记录为空" << endl;}else{for (int i = 0;i < abs->m_Size;i++){cout << "姓名:" << abs->personArry[i].m_Name << "\t"<< "性别:" << (abs->personArry[i].m_Sex == 1 ? "男":"女" )<< "\t"<< "年龄:" << abs->personArry[i].m_Age << "\t"<< "联系电话:" << abs->personArry[i].m_Phone << "\t"<< "家庭地址:" << abs->personArry[i].m_Addr << endl;}}system("pause");//请按任意键继续system("cls");//清屏操作
}
//检测联系人是否存在
//如果存在,返回联系人所在数组具体位置;如果不存在,返回-1
int isExist(struct Addressbooks * abs,string name)
{for(int i=0;i<abs->m_Size;i++){//找到用户输入的姓名了if (abs->personArry[i].m_Name==name){ return i;//找到了,返回这个人在数组中的下标编号}}return -1;//如果遍历后,没找到用户输入的姓名,返回-1system("pause");//请按任意键继续system("cls");//清屏操作
}
//3、删除指定联系人
void delectPerson(struct Addressbooks * abs)
{cout << "请输入删除联系人姓名:" << endl;string name;cin >> name;int ret = isExist(abs, name);if (ret == -1){cout << "查无此人" << endl;}else{   //查到此人,进行删除操作int i = ret;//要删除i,将i后所有数据进行前移,并让通讯录中人员个数-1for (;i < abs->m_Size;i++){//数据前移abs->personArry[i].m_Name = abs->personArry[i + 1].m_Name;abs->personArry[i].m_Sex = abs->personArry[i + 1].m_Sex;abs->personArry[i].m_Age = abs->personArry[i + 1].m_Age;abs->personArry[i].m_Phone = abs->personArry[i + 1].m_Phone;abs->personArry[i].m_Addr = abs->personArry[i + 1].m_Addr;}abs->m_Size--;//更新通讯录中人员数cout << "删除成功" << endl;}system("pause");system("cls");
}
//4、查找联系人
void findPerson(struct Addressbooks * abs)
{cout << "请输入您想要查找的联系人:" << endl;string name;cin >> name;int ret = isExist(abs, name);if (ret == -1){cout << "查无此人" << endl;}else{   //查到此人,进行显示操作int i = ret;cout << "姓名:"<< abs->personArry[i].m_Name <<"\t";cout << "性别:" << abs->personArry[i].m_Sex << "\t";cout << "年龄:" << abs->personArry[i].m_Age << "\t";cout << "联系方式:" << abs->personArry[i].m_Phone << "\t";cout << "地址:" << abs->personArry[i].m_Addr << endl;}//按任意键清屏system("pause");system("cls");
}
//5、修改联系人
void modifyPerson(struct Addressbooks *abs)
{cout << "请输入您想要修改的联系人:" << endl;string name;cin >> name;int ret = isExist(abs, name);if (ret == -1){cout << "查无此人" << endl;}else{   //查到此人,进行修改操作//姓名int i = ret;string name;cout << "请输入姓名:" << endl;cin >> name;abs->personArry[i].m_Name = name;//性别int sex = 0;cout << "请输入性别:" << endl;cout << "1 --- 男:" << endl;cout << "2 --- 女:" << endl;cin >> sex;//输入对了,退出循环//输入错了,一直输入while (true){//cin >> sex;//错误位置,加在这里需要输入两次if (sex == 1 || sex == 2){abs->personArry[i].m_Sex = sex;break; //输入对了,存后退出}cout << "输入错误,请重新输入性别" << endl;cin >> sex;//正确位置,输入的不对就一直输}//年龄int age = 0;cout << "请输入年龄:" << endl;cin >> age;while (true){//cin >> sex;//错误位置,加在这里需要输入两次if (age > 0 && age < 150){abs->personArry[i].m_Age = age;break; //输入对了,存后退出}cout << "输入错误,请重新输入年龄" << endl;cin >> age;//正确位置,输入的不对就一直输}//电话string phone;cout << "请输入电话:" << endl;cin >> phone;abs->personArry[i].m_Phone = phone;//住址string address;cout << "请输入住址:" << endl;cin >> address;abs->personArry[i].m_Addr = address;cout << "修改成功" << endl;}system("pause");system("cls");}
//6、删除所有联系人
void cleanPerson(struct Addressbooks *abs)
{cout << "是否确认清空?" << endl;cout << "1 --- 是" << endl;cout << "2 --- 否" << endl;int a;cin >> a;if (a == 1){abs->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()
{ //创建通讯录结构体变量struct Addressbooks abs;//初始化通讯录中当前人员个数abs.m_Size = 0;int select = 0;//创建用户选择输入的变量while (true){//菜单调用showMenu();cin >> select;switch (select){case 1://1、添加联系人    //addPerson(abs); //值传递,不改变实参,无法增加addPerson(&abs);//利用地址传递,可以修改实参break;case 2://2、显示联系人showPerson(&abs);break;case 3://3、删除联系人//{ //不加大括号,switch就会底下有红色波浪线//    cout << "请输入删除联系人姓名:" << endl;//   string name;//  cin >> name;//    if (isExist(&abs, name) == -1)//  {//     cout << "查无此人" << endl;// }// else//  {//     cout << "找到了" << endl;//  }//}delectPerson( &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;
}

练习 ~黑马程序员匠心之作-第二阶段实战-P72~P83-通讯录管理系统相关推荐

  1. 黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难——讲义

    基础课部分讲义 核心课部分讲义 提高课部分讲义 黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难--视频链接

  2. 黑马程序员匠心之作|C++教程从0到1入门编程(60 指针-const修饰指针61 指针-指针和数组62 指针-指针和函数63 指针-指针配合数组和函数的案例)

    黑马程序员匠心之作|C++教程从0到1入门编程(60 指针-const修饰指针61 指针-指针和数组62 指针-指针和函数63 指针-指针配合数组和函数的案例) 一.60 指针-const修饰指针 二 ...

  3. 黑马程序员匠心之作|C++教程从0到1入门编程-c++核心编程

    内存四大区域: 运行前: 全局区(存放全局变量,静态变量,常量) ,常量区中存放 const修饰的全局常量和字符串常量,静态变量为static修饰的变量 代码区(存放二进制机器指令,特点:共享与只读) ...

  4. 黑马程序员匠心之作|C++教程从0到1入门编程(基础)

    1 C++初识 1.1 第一个C++程序 编写一个C++程序总共分为4个步骤: 创建项目 创建文件 编写代码 运行程序 1.1.1 C++程序通用模块 #include <iostream> ...

  5. 【黑马程序员匠心之作|C++教程】C++基础入门、通讯录管理系统

    文章目录 C++基础入门 1 C++初识 1.2 注释 1.3变量 1.4 常量 1.5 关键字 1.6 标识符命名规则 2 数据类型 2.1 整形 2.2 `sizeof` 关键字 2.3 实型(浮 ...

  6. 《黑马程序员2023新版黑马程序员大数据入门到实战教程,大数据开发必会的Hadoop、Hive,云平台实战项目》学习笔记总目录

    本文是对<黑马程序员新版大数据入门到实战教程>所有知识点的笔记进行总结分类. 学习视频:黑马程序员新版大数据 学习时总结的学习笔记以及思维导图会在后续更新,请敬请期待. 前言:配置三台虚拟 ...

  7. day30 | 黑马程序员Java全程笔记 | 第二阶段MySQL高级 JDBC

    01.反馈回顾 事务: ★ 概述: 逻辑上的一组操作,组成这组操作的各个单元要么同时成功,要么同时失败. 事务是一个最小的执行单元. mysql中的事务控制: 手动事务: 需要手动开启,提交,回滚开启 ...

  8. day29 | 黑马程序员Java全程笔记 | 第二阶段MySQL高级事务-索引-视图-触发器-存储过程

    目录 01.反馈 02.回顾 03.并发访问MySQL-问题概述 并发访问的问题 04.并发访问MySQL-问题演示 05.并发访问MySQL-read-committed解决脏读问题 06.并发访问 ...

  9. 【黑马程序员 C++教程从0到1入门编程】【笔记3】C++核心编程(内存分区模型、引用、函数提高)

    黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难 文章目录 1 内存分区模型 1.1 程序运行前 1.2 程序运行后(手动开辟内存:c语言malloc,c++new) 1.3 new操作 ...

最新文章

  1. 2022-2028年中国电压力锅市场投资分析及前景预测报告
  2. Visual Studio Code连接SQL SERVER 2019
  3. 分享实用监控脚本:使用Shell检查进程是否存在
  4. Markdown 基础学习
  5. 和可被 K 整除的子数组
  6. 人工智能和计算机软件,人工智能在计算机软件方面有什么应用?
  7. 2021-08-26
  8. mysql 自定义函数教程_MySQL自定义函数
  9. 2008.10 井冈山-金秋 【律动音符篇】
  10. 【论文笔记】Convolutional Neural Networks for Sentence Classification
  11. f5源站获取http/https访问的真实源IP解决方案
  12. Db4o 新建、查询、更新、删除操作
  13. excel计算机考试题库,2016年职称计算机考试题库EXCEL题库及答案
  14. 不带脏字的英文骂人法
  15. 经典Bug永流传---每周一“虫”(二十一)
  16. C语言学习--01 认识数据类型
  17. IPhone多视图切换
  18. 神州云服务平台(型号:DCC-CRL1000)基本配置教学视频
  19. Halcon 图形窗口显示文本
  20. C#窗体Click事件没反应

热门文章

  1. Unity查找游戏对象
  2. 桌面总是弹出计算机内存不足,Win10提示计算机的内存不足请保存文件并关闭程序...
  3. Exchange 2010 Ps 之邮箱稽核和稽核内容导出!
  4. openwrt 断网 自动重启网络
  5. 《可以量化的经济学》解决了什么经…
  6. 七夕,用python表白的各种姿势
  7. 1-2Python创始人
  8. oracle cast 用法
  9. 风变编程python小课课件_【风变编程】第五课笔记
  10. 2020电赛F题回顾——简易无接触温度测量与身份识别装置