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

📄 memberview.cpp

📁 用于数据结构课程设计,双向链表,并且用了MFC做图形界面
💻 CPP
字号:
// memberView.cpp : implementation of the CMemberView class
//

#include "stdafx.h"
#include "telephonebook.h"

#include "memberDoc.h"
#include "memberView.h"
#include "INSTRCTION.h"

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

/////////////////////////////////////////////////////////////////////////////
// CMemberView

IMPLEMENT_DYNCREATE(CMemberView, CFormView)

BEGIN_MESSAGE_MAP(CMemberView, CFormView)
	//{{AFX_MSG_MAP(CMemberView)
	ON_BN_CLICKED(IDC_NEXT, OnNext)
	ON_BN_CLICKED(IDC_PREV, OnPrev)
	ON_COMMAND(ID_MEMBER_DELETE, OnMemberDel)
	ON_UPDATE_COMMAND_UI(ID_MEMBER_DELETE, OnUpdateMemberDel)
	ON_COMMAND(ID_MEMBER_END, OnMemberEnd)
	ON_UPDATE_COMMAND_UI(ID_MEMBER_END, OnUpdateMemberEnd)
	ON_COMMAND(ID_MEMBER_HOME, OnMemberHome)
	ON_UPDATE_COMMAND_UI(ID_MEMBER_HOME, OnUpdateMemberHome)
	ON_COMMAND(ID_MEMBER_INSERT, OnMemberIns)
	ON_BN_CLICKED(IDC_CLEAR, OnClear)
	ON_COMMAND(ID_MEMBER_SEARCH, OnMemberSea)
	ON_UPDATE_COMMAND_UI(ID_MEMBER_SEARCH, OnUpdateMemberSea)
	ON_COMMAND(ID_EDIT_DELETE, OnEditDelete)
	ON_UPDATE_COMMAND_UI(ID_EDIT_DELETE, OnUpdateEditDelete)
	ON_COMMAND(ID_EDIT_HOME, OnEditHead)
	ON_UPDATE_COMMAND_UI(ID_EDIT_HOME, OnUpdateEditHead)
	ON_COMMAND(ID_EDIT_INSERT, OnEditInsert)
	ON_COMMAND(ID_EDIT_END, OnEditTail)
	ON_UPDATE_COMMAND_UI(ID_EDIT_END, OnUpdateEditTail)
	ON_COMMAND(IDC_INSTRCTION, OnInstruction)
	ON_BN_CLICKED(IDC_S, OnS)
	ON_BN_CLICKED(IDC_MODIFY, OnModify)
	ON_COMMAND(IDC_MEMBER_MODIFY, OnMemberModify)
	ON_UPDATE_COMMAND_UI(IDC_MEMBER_MODIFY, OnUpdateMemberModify)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMemberView construction/destruction

CMemberView::CMemberView()
	: CFormView(CMemberView::IDD)
{
	TRACE("Entering CMemberView constructor\n");
	//{{AFX_DATA_INIT(CMemberView)
	m_cellphone = _T("");
	m_name = _T("");
	m_sparephone = _T("");
	m_search = _T("");
	//}}AFX_DATA_INIT
	m_position=NULL;
}

CMemberView::~CMemberView()
{
}

void CMemberView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CMemberView)
	DDX_Text(pDX, IDC_CELLPHONE, m_cellphone);
	DDX_Text(pDX, IDC_NAME, m_name);
	DDX_Text(pDX, IDC_SPAREPHONE, m_sparephone);
	DDX_Text(pDX, IDC_SEARCH, m_search);
	//}}AFX_DATA_MAP
}

BOOL CMemberView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CFormView::PreCreateWindow(cs);
}


/////////////////////////////////////////////////////////////////////////////
// CMemberView diagnostics

#ifdef _DEBUG
void CMemberView::AssertValid() const
{
	CFormView::AssertValid();
}

void CMemberView::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}

CMemberDoc* CMemberView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMemberDoc)));
	return (CMemberDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMemberView message handlers

void CMemberView::OnNext() 
{
	POSITION pos;
	TRACE("Entering CMemberView::OnNext\n");
	if((pos=m_position)!=NULL){
		m_pList->GetNext(pos);
		if(pos){
			GetEntry(pos);
			m_position=pos;
		}
	}
	
}

void CMemberView::OnPrev() 
{
	POSITION pos;
	TRACE("Entering CMemberView::OnPrev\n");
	if((pos=m_position)!=NULL){
		m_pList->GetPrev(pos);
		if(pos){
			GetEntry(pos);
			m_position=pos;
			
		}
	}
	
}
void CMemberView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint) 
{
	TRACE("Entering CMemberView::OnUpdate\n");
   m_position=m_pList->GetHeadPosition();
   GetEntry(m_position);
	
}

void CMemberView::OnInitialUpdate()
{
	TRACE("Entering CMemberView::OnInitialUpdate\n");
	m_pList=GetDocument()->GetList();
	CFormView::OnInitialUpdate();
}

void CMemberView::OnMemberDel() 
{
	POSITION pos;
	TRACE("Entering CMemberView::OnMemberDel\n");
	if((pos=m_position)!=NULL){
		m_pList->GetNext(pos);
		if(pos==NULL){
			pos=m_pList->GetHeadPosition();
			if(pos==m_position)
				pos=NULL;
		}
	}
	GetEntry(pos);
	CMember *ps=m_pList->GetAt(m_position);
	m_pList->RemoveAt(m_position);
	delete ps;
	m_position=pos;
	GetDocument()->SetModifiedFlag();
	GetDocument()->UpdateAllViews(this);
	
}

void CMemberView::OnUpdateMemberDel(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(m_position!=NULL);
	
}

void CMemberView::OnMemberEnd() 
{
	TRACE("Entering CMemberView::OnMemberEnd\n");

	if(!m_pList->IsEmpty()){
		m_position=m_pList->GetTailPosition();
		GetEntry(m_position);
	}
}

void CMemberView::OnUpdateMemberEnd(CCmdUI* pCmdUI) 
{
	
	POSITION pos;
	pos=m_pList->GetTailPosition();
	pCmdUI->Enable((m_position!=NULL)&&(pos!=m_position));
}

void CMemberView::OnMemberHome() 
{
	TRACE("Entering CMemberView::OnMemberHome\n");

	if(!m_pList->IsEmpty())
		m_position=m_pList->GetHeadPosition();
	GetEntry(m_position);
	
}

void CMemberView::OnUpdateMemberHome(CCmdUI* pCmdUI) 
{
	
	POSITION pos;
	pos=m_pList->GetHeadPosition();
	pCmdUI->Enable((m_position!=NULL)&&(pos!=m_position));
}

void CMemberView::OnMemberIns() 
{
	TRACE("Entering CMemberView::OnMemberIns\n");
	Insertentry(m_position);
	GetDocument()->SetModifiedFlag();
	GetDocument()->UpdateAllViews(this);
}





void CMemberView::GetEntry(POSITION position)
{
	if(position){
		CMember*pMember=m_pList->GetAt(position);
	m_name=pMember->m_name;
	m_cellphone=pMember->m_cellphone;
	m_sparephone=pMember->m_sparephone;
}
	else
		ClearEntry();

UpdateData(false);
}

void CMemberView::Insertentry(POSITION position)
{
	if(UpdateData(TRUE)){
		CMember*pMember=new CMember;
		pMember->m_name=m_name;
		pMember->m_cellphone=m_cellphone;
		pMember->m_sparephone=m_sparephone;
		m_position=m_pList->InsertAfter(m_position,pMember);
	}
}



void CMemberView::OnClear() 
{
    ClearEntry();	
}

void CMemberView::ClearEntry()
{
	m_name="";
	m_cellphone="";
	m_sparephone="";
	UpdateData(false);
	((CDialog*)this)->GotoDlgCtrl(GetDlgItem(IDC_NAME));
}

void CMemberView::OnMemberSea() 
{

	POSITION pos,poss;

	if(UpdateData(true)){
	
		poss=m_pList->GetTailPosition();
		pos=m_pList->GetHeadPosition();
	    CMember *pMember=m_pList->GetAt(pos);
		CMember *sMember=m_pList->GetAt(poss);
		if(m_search.Left(2)==pMember->m_name.Left(2)||m_search.Left(2)==sMember->m_name.Left(2))
		{
			if(m_search.Left(2)==pMember->m_name.Left(2))
			{
			
			GetEntry(pos);
			SetDlgItemText(IDC_ERROR,"");}
				
			else if(m_search.Left(2)==sMember->m_name.Left(2))
			{
				
					GetEntry(poss);
					SetDlgItemText(IDC_ERROR,"");
				}
			
		}
		
		
        else
		{   
			
			while((pos!=m_pList->GetTailPosition())&&(pMember->m_name.Left(2)!=m_search.Left(2)))
		{pMember=m_pList->GetNext(pos);
			}
	
			
		if(pMember->m_name.Left(2)==m_search.Left(2))
		{
			poss=pos;
            
			while((pos!=m_pList->GetTailPosition())&&(pMember->m_name!=m_search))
			{pMember=m_pList->GetNext(pos);}
			if(pMember->m_name==m_search)
			{pMember=m_pList->GetPrev(pos);
			GetEntry(pos);
			SetDlgItemText(IDC_ERROR,"");}
		    else if(pMember->m_name!=m_search)
			{
				pMember=m_pList->GetPrev(poss);
				GetEntry(poss);}
		}
	

			else if(pMember->m_name.Left(2)!=m_search.Left(2))
		
		{SetDlgItemText(IDC_ERROR,"对不起!电话簿中不存在该姓名!");}
		}
	}
}

		
		
		
	
	
	
		
	



void CMemberView::OnUpdateMemberSea(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(m_position!=NULL);
}

void CMemberView::OnEditDelete() 
{
	POSITION pos;
	TRACE("Entering CMemberView::OnMemberDel\n");
	if((pos=m_position)!=NULL){
		m_pList->GetNext(pos);
		if(pos==NULL){
			pos=m_pList->GetHeadPosition();
			if(pos==m_position)
				pos=NULL;
		}
	}
	GetEntry(pos);
	CMember *ps=m_pList->GetAt(m_position);
	m_pList->RemoveAt(m_position);
	delete ps;
	m_position=pos;
	GetDocument()->SetModifiedFlag();
	GetDocument()->UpdateAllViews(this);
	
}

void CMemberView::OnUpdateEditDelete(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(m_position!=NULL);
	
}

void CMemberView::OnEditHead() 
{
	TRACE("Entering CMemberView::OnMemberHome\n");

	if(!m_pList->IsEmpty())
		m_position=m_pList->GetHeadPosition();
	GetEntry(m_position);
	
}

void CMemberView::OnUpdateEditHead(CCmdUI* pCmdUI) 
{
	POSITION pos;
	pos=m_pList->GetHeadPosition();
	pCmdUI->Enable((m_position!=NULL)&&(pos!=m_position));
	
}

void CMemberView::OnEditInsert() 
{
TRACE("Entering CMemberView::OnMemberIns\n");
	Insertentry(m_position);
	GetDocument()->SetModifiedFlag();
	GetDocument()->UpdateAllViews(this);
}



void CMemberView::OnEditTail() 
{
	TRACE("Entering CMemberView::OnMemberEnd\n");

	if(!m_pList->IsEmpty()){
		m_position=m_pList->GetTailPosition();
		GetEntry(m_position);
	}
	
}

void CMemberView::OnUpdateEditTail(CCmdUI* pCmdUI) 
{
	POSITION pos;
	pos=m_pList->GetTailPosition();
	pCmdUI->Enable((m_position!=NULL)&&(pos!=m_position));
}

void CMemberView::OnInstruction() 
{
   INSTRCTION dlg;
   dlg.DoModal();
	
}

void CMemberView::OnS() 
{
	POSITION pos,poss;

	if(UpdateData(true)){
	
		poss=m_pList->GetTailPosition();
		pos=m_pList->GetHeadPosition();
	    CMember *pMember=m_pList->GetAt(pos);
		CMember *sMember=m_pList->GetAt(poss);
		if(m_search.Left(2)==pMember->m_name.Left(2)||m_search.Left(2)==sMember->m_name.Left(2))
		{
			if(m_search.Left(2)==pMember->m_name.Left(2))
			{
			
			GetEntry(pos);
			SetDlgItemText(IDC_ERROR,"");}
				
			else if(m_search.Left(2)==sMember->m_name.Left(2))
			{
				
					GetEntry(poss);
					SetDlgItemText(IDC_ERROR,"");
				}
			
		}
		
		
        else
		{   
			
			while((pos!=m_pList->GetTailPosition())&&(pMember->m_name.Left(2)!=m_search.Left(2)))
		{pMember=m_pList->GetNext(pos);
			}
	
			
		if(pMember->m_name.Left(2)==m_search.Left(2))
		{
			poss=pos;
            
			while((pos!=m_pList->GetTailPosition())&&(pMember->m_name!=m_search))
			{pMember=m_pList->GetNext(pos);}
			if(pMember->m_name==m_search)
			{pMember=m_pList->GetPrev(pos);
			GetEntry(pos);
			SetDlgItemText(IDC_ERROR,"");}
		    else if(pMember->m_name!=m_search)
			{
				pMember=m_pList->GetPrev(poss);
				GetEntry(poss);}
		}
	

			else if(pMember->m_name.Left(2)!=m_search.Left(2))
		
		{SetDlgItemText(IDC_ERROR,"对不起!电话簿中不存在该姓名!");}
		}
	}
}

		
		
		
	


void CMemberView::OnModify() 
{
	UpdateData(true);
  CMember *ps=m_pList->GetAt(m_position);
		ps->m_name=m_name;
		ps->m_cellphone=m_cellphone;
		ps->m_sparephone=m_sparephone;
		
GetDocument()->SetModifiedFlag();
	GetDocument()->UpdateAllViews(this);

}

void CMemberView::OnMemberModify() 
{
	UpdateData(true);
  CMember *ps=m_pList->GetAt(m_position);
		ps->m_name=m_name;
		ps->m_cellphone=m_cellphone;
		ps->m_sparephone=m_sparephone;
		
	GetDocument()->SetModifiedFlag();
	GetDocument()->UpdateAllViews(this);

}

void CMemberView::OnUpdateMemberModify(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(m_position!=NULL);
}

⌨️ 快捷键说明

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