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

📄 list.cpp

📁 医院的护士人员管理系统
💻 CPP
字号:
// List.cpp: implementation of the CList class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Nurse.h"
#include "List.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CList::~CList()
{
//	remove_all();		// 释放所有申请空间
}
// 通过ID查找护理信息
CListItem* CList::findByID(CString id)
{
	CListItem *ptr = m_pHead;
	while(ptr)
	{
		if(ptr->m_szWorkerID == id)
		{
			break;
		}
		ptr = ptr->m_pNext;
	}
	
	return ptr;
}

// 返回前一个指针
CListItem* CList::preview(CListItem *p)
{
	if(p == m_pHead)		// 如果当前指针在头部则返回0
	{
		return 0;
	}
	else
	{
		CListItem *ptr = m_pHead;

		while(ptr && ptr->m_pNext != p)
		{
			ptr = ptr->m_pNext;
		}

		return ptr;
	}
}
// 插入链表尾部
void CList::insert_end(CListItem *p)
{
	if(!m_pTail)			// 如果为空链表
	{
		m_pHead = m_pTail = p;
	}
	else					// 插入链表尾部,同时更新尾指针	
	{
		m_pTail->m_pNext = p;
		m_pTail = p;
	}

	++m_nSize;			   // 信息个数加1 
}

// 删除所有护理信息
void CList::remove_all()
{
	CListItem *ptr = m_pHead;
	CListItem *pCurrent = 0;
	while(ptr)
	{
		pCurrent = ptr;
		ptr = ptr->m_pNext;
		delete pCurrent;
	}
	pCurrent = 0;
	m_pHead = m_pTail = 0;
	m_nSize = 0;
}

// 删除指定id的护理信息
bool CList::removeByID(CString id)
{
	CListItem *ptr = findByID(id);
	if(!ptr)				// 如果护理信息不存在则返回 "flase"
		return false;
	
	if(ptr == m_pHead)		// 要删除的护理信息在链表头部
	{
		m_pHead = ptr->m_pNext;
		if(!m_pHead)		//删除节点后链表为空时至尾指针为0
		{
			m_pTail = 0;
		}
		delete ptr;
	}
	else
	{
		CListItem *pCurrent = preview(ptr); // 返回要删除信息的上一个
												// 信息指针
												
		if(ptr == m_pTail)				// 要删除的护理信息在链表尾部 
		{
			pCurrent->m_pNext = 0;
			m_pTail = pCurrent;
			delete ptr;
		}
		else
		{
			pCurrent->m_pNext = ptr->m_pNext;
			delete ptr;
		}
	}
	
	--m_nSize;		// 护理信息数减1
	ptr = 0;
	return true;	// 返回“true”表示成功删除
}

// 查找在某年月以后出生的护理信息
void CList::findAfterDate(CListItem *head,CString date)
{
	CListItem *ptr = head;
	// 遍历链表查找符合条件的信息
	while(ptr)
	{
		if(ptr->m_date > date)	// 符合条件添加到临时链表中
		{
			insert_end(ptr);
			
		}
		ptr = ptr->m_pNext;
	}
}
// 查找在某年月以前出生的护理信息
void CList::findBeforeDate(CListItem* head,CString date)
{
	CListItem *ptr = head;
	// 遍历链表查找符合条件的信息
	while(ptr)
	{
		if(ptr->m_date < date)	// 符合条件添加到临时链表中
		{
			insert_end(ptr);	
		}
		ptr = ptr->m_pNext;
	}

}

// 根据护理级别查找信息 
void CList::findByTechnical(CListItem* head,CString technical)
{
	CListItem *ptr = head;
	// 遍历链表查找符合条件的信息
	while(ptr)
	{
		if(ptr->m_szTechnical == technical)	// 符合条件添加到临时链表中
		{
			insert_end(ptr);	
		}
		ptr = ptr->m_pNext;
	}
}
	
// 根据婚姻状况查找信息
void CList::findByMarriage(CListItem* head,CString marriage)
{
	CListItem *ptr = head;
	// 遍历链表查找符合条件的信息
	while(ptr)
	{
		if(ptr->m_szMarriage == marriage)	// 符合条件添加到临时链表中
		{
			insert_end(ptr);
		}
		ptr = ptr->m_pNext;
	}
}

⌨️ 快捷键说明

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