date: 2019-11-29 19:44:15
最近在学习C++编程,在学习过程中存在一些问题疑惑,希望通过这个博客记录一下学习过程,权当是C++学习过程过程中做的错题笔记了;也希望借此学习一下写博客。
学习视频来自B站 黑马程序员匠心之作|C++教程从0到1入门教程 link。
职工管理系统
最近在学习编写职工管理系统,在查找员工的程序段,如果按姓名查找员工需对员工进行判断是否存在,我采用的通过简单的if–else语句进行判断,代码如下:
else if (select == 2) //按姓名查找
{
cout << "请输入您要查找的员工姓名:" << endl;
string name;
cin >> name;
for (int i = 0; i < this->m_EmpNum; i++)
{
if (this->m_EmpArray[i]->m_Name == name)
{
cout << "查找成功,该员工信息如下:" << endl;
this->m_EmpArray[i]->showInfo();
}
else
{
cout << "查无此人" << endl;
}
}
}
但是由于需要与员工数组进行一一比较,在for循环中,所以当查无此人时,系统会在每次循环都输出一次查无此人。
教程解决方法
教程通过定义了一个布尔变量flag(这也是我前面不能理解的);
bool flag = false; //查找到的标志
通过判断flag来决定有无查到。
else if (select == 2) //按姓名查找
{
cout << "请输入您要查找的员工姓名:" << endl;
string name;
cin >> name;
bool flag = false; //查找到的标志
for (int i = 0; i < this->m_EmpNum; i++)
{
if (this->m_EmpArray[i]->m_Name == name)
{
cout << "查找成功,该员工信息如下:" << endl;
flag = true;
this->m_EmpArray[i]->showInfo();
}
}
if (flag == false)
{
cout << "查无此人" << endl;
}
}