⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 findlist.cpp

📁 很好的学习C++源码,基于C++版学生管理系统
💻 CPP
字号:
#include "studentlist.h"    //学生链表类头文件


//函数功能:依据形参得到不同的参数情况实现按学号、姓名查找、姓名模糊查找,查找到的学生地址存放到一个新建的链表中
//输入参数:无
//输出参数:无
//返回值:返回找到的学生个数
//修改人:邹明上
//修改时间:2006.07.03
int CStudentList::Find(FindList* pFind_H,char* cFindStr,int nNum)
{
	pFind_H->nNo = 0;  //初始化查找链表的三个参数
	pFind_H->pNext = NULL;
	pFind_H->pNow  = NULL;

	FindList* pEnd  = NULL;
	FindList* pNew  = NULL;
	int nI = 0;
	for(m_pMove = m_pHead;m_pMove != NULL;m_pMove = m_pMove->m_pNext)
	{
		if((!strcmp(m_pMove->m_sId,cFindStr)&&(nNum == 1))||   //判断节点中学号是否与输入的学号相同
			(!strcmp(m_pMove->m_sName,cFindStr)&&(nNum == 2))) //判断节点中姓名是否与输入的姓名相同
		{   //实现按不同方式查找时,判断是否满足查找条件
			pNew = new FindList;
			pNew->nNo = ++nI;;
			pNew->pNow = m_pMove;
			pNew->pNext = NULL;

			if(pFind_H->pNext == NULL)
			{
				pFind_H->pNext = pNew;
				pEnd = pNew;
			}
			else
			{
				pEnd->pNext = pNew;
				pEnd = pNew;
			}

			if(nNum == 1)  //按学号查找时,因为学号是唯一的,当找到一个相同学号时,就终止for循环,提高程序效率
			{
				break;
			}
		}
		else if(nNum == 3)
		{
			if(strlen(cFindStr) == 0) //当输入的字符串为空时,返回未找到学生姓名
			{
				return 0;
			}
			else if(strstr(m_pMove->m_sName,cFindStr) != NULL)
			{   //strstr函数判断m_pMove->m_sName字符串是否包含cFindStr字符串,不包含时返回为NULL
				pNew = new FindList;
				pNew->nNo = ++nI;
				pNew->pNow = m_pMove;
				pNew->pNext = NULL;

				if(pFind_H->pNext == NULL)
				{
					pFind_H->pNext = pNew;
					pEnd = pNew;
				}
				else
				{
					pEnd->pNext = pNew;
					pEnd = pNew;
				}
			}
		}
	}
	return nI;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -