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

📄 p09005435doc.cpp

📁 MFC小程序
💻 CPP
字号:
// p09005435Doc.cpp : implementation of the CP09005435Doc class
//

#include "stdafx.h"
#include "p09005435.h"

#include "p09005435Doc.h"
#include "p09005435View.h"
#include "MatrixDig.h"
#include "bookDlg.h" 
#include "lianbiao.h"
#include "book.h"
#include "readerdlg.h"
#include "landareurn.h"
#include "booklianbiao.h"

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

/////////////////////////////////////////////////////////////////////////////
// CP09005435Doc

IMPLEMENT_DYNCREATE(CP09005435Doc, CDocument)

BEGIN_MESSAGE_MAP(CP09005435Doc, CDocument)
	//{{AFX_MSG_MAP(CP09005435Doc)
	ON_COMMAND(ID_MATRIX_CREATE, OnMatrixCreate)
	ON_COMMAND(IDC_BOOK_NEW, OnBookNew)
	ON_COMMAND(IDC_BOOK_LEND, OnBookLend)
	ON_COMMAND(IDC_BOOK_RETURN, OnBookReturn)
	ON_COMMAND(IDC_BOOK_oldbook, OnBOOKoldbook)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CP09005435Doc construction/destruction

CP09005435Doc::CP09005435Doc()
{
	// TODO: add one-time construction code here
	pinbook=NULL;
	pinend=NULL;
	pinenter=NULL;
	poutbook=NULL;
	poutenter=NULL;
	poutend=NULL;
}

CP09005435Doc::~CP09005435Doc()
{
}

BOOL CP09005435Doc::OnNewDocument()
{
	if (!CDocument::OnNewDocument())
		return FALSE;

	// TODO: add reinitialization code here
	// (SDI documents will reuse this document)

	return TRUE;
}



/////////////////////////////////////////////////////////////////////////////
// CP09005435Doc serialization

void CP09005435Doc::Serialize(CArchive& ar)
{
	if (ar.IsStoring())
	{	
		mbookArray.Add(pinbook);
		mbookArray.Add(pinend);     //依次保存四个指针的指向
		mbookArray.Add(poutbook);   
		mbookArray.Add(poutend);
		mbookArray.Serialize(ar);
	}
	else
	{
		mbookArray.Serialize(ar);
		pinbook=mbookArray[mbookArray.GetSize()-4];
		pinend=mbookArray[mbookArray.GetSize()-3];       //依次取出四个指针的指向
		poutbook=mbookArray[mbookArray.GetSize()-2];
		poutend=mbookArray[mbookArray.GetSize()-1];

	}
}

/////////////////////////////////////////////////////////////////////////////
// CP09005435Doc diagnostics

#ifdef _DEBUG
void CP09005435Doc::AssertValid() const
{
	CDocument::AssertValid();
}

void CP09005435Doc::Dump(CDumpContext& dc) const
{
	CDocument::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CP09005435Doc commands

void CP09005435Doc::OnMatrixCreate() 
{
	// TODO: Add your command handler code here
 	CMatrixDig Dlg;
    static	int n=1;
 	if((n%2)&&(Dlg.DoModal() == IDOK))
 	{
		n++;
 		m_Mat1.Create(Dlg.m_Row,Dlg.m_Col);	
 	}
	else if((n%2==0)&&(Dlg.DoModal() == IDOK))
	{
 	   n++;	
	   m_Mat2.Create(Dlg.m_Row,Dlg.m_Col);	
	}
}

void CP09005435Doc::OnBookNew() 
{
	// TODO: Add your command handler code here

	static int n=0;
	Cbooklianbiao * a;
	CbookDlg  Dlg;
	int i;	
	char b;
    if(Dlg.DoModal()==IDOK)
	{
	   for(i=0;i<Dlg.m_number;i++)
	   {
		   	a=new Cbooklianbiao;
	        ++n;
			b='0'+i;
		    if(n==1)
			{
			    pinbook=a;
			    pinend=a;
			    a->pnext=NULL;
			    a->data->authername=Dlg.m_authername;
			    a->data->booknumID=Dlg.m_booknumID;
			    a->data->bookname=Dlg.m_bookname;
				a->data->booklandID=Dlg.m_booknumID+'-'+b;
				mbookArray.Add(a);
			}
		    else
			{
			    pinend->pnext=a;
			    pinend=a;
			    a->pnext=NULL;
			    a->data->authername=Dlg.m_authername;
			    a->data->booknumID=Dlg.m_booknumID;
			    a->data->bookname=Dlg.m_bookname;
				a->data->booklandID=Dlg.m_booknumID+'-'+b;
				mbookArray.Add(a);
			}
		}
	    AfxMessageBox("成功添加新书!");
	}
	UpdateAllViews(NULL);
}


//////////////////////////////////////////////////////////////////////////////////////////////////
void CP09005435Doc::OnBookLend() 
{
	// TODO: Add your command handler code here
	static int i=0;
	int n=0;
	Cbooklianbiao * platest;
	CreaderDlg  Dlg;
	Clandareurn  dlg;

	if(i==0)
	{
		poutbook=NULL;
		poutend=poutbook;
	}

	poutenter=poutbook;
	pinenter=pinbook;




	if(Dlg.DoModal()==IDOK)
	{
	   for(;;)
	   {
		  if(poutenter==NULL)
		      break;
		  if(poutenter->data->stuID==Dlg.m_stuID)
		  {
             ++n;
		  }
	      poutenter=poutenter->pnext;

	   }
	if(n==2)
	 	AfxMessageBox("对不起,你借书已满两本不可再借!");
    else
	{
		if(dlg.DoModal()==IDOK)
		{    
		   platest=pinbook;
	       for(;;)
		   {
		      if(pinenter->data->booklandID==dlg.m_lendlandID)
			  {
				   if(i==0)
				   {
					   poutbook=pinenter;
					   poutend=pinenter;
					   i++;
				   }
				   else
				   {
   			           poutend->pnext=pinenter;
			           poutend=pinenter; 
				   }
                      
			       if(pinenter==pinbook)
				   {
			        	pinbook=pinbook->pnext;
						pinenter->pnext=NULL;
				        pinenter=pinbook;
				   }
			       else
				   {	
				        platest->pnext=pinenter->pnext;
						pinenter->pnext=NULL;
				        pinenter=platest->pnext;
				   } 
				   break;
				   
			  }
			  else
			  {
                  platest=pinenter;
				  pinenter=pinenter->pnext;
			  }

		      if(pinenter==NULL)
			  {
	           	 AfxMessageBox("对不起,图书馆昝无此书!");	
		         break;
			  }
		   }
	    	AfxMessageBox("借书成功!");
     	    poutend->data->stuID=Dlg.m_stuID;
            poutend->data->stuname=Dlg.m_stuname;
            poutend->data->mDate=Dlg.m_mdate;
		}

	}
	UpdateAllViews(NULL);
	}
}

void CP09005435Doc::OnBookReturn() 
{
	// TODO: Add your command handler code here
	int n=0;
	Cbooklianbiao * platest;
	CreaderDlg  Dlg;
	Clandareurn  dlg;
	
	poutenter=poutbook;
	pinenter=pinbook;

	if(Dlg.DoModal()==IDOK&&dlg.DoModal()==IDOK)
	{    
		platest=poutbook;
	    for(;;)
		{
		    if(poutenter==NULL)
		          break;
		    if(poutenter->data->booklandID==dlg.m_lendlandID)
			 {
				  ++n;
				  if(pinend==pinbook)
				  {
					   pinbook=poutenter;
					   pinend=poutenter;
				  }
				  else
				  {
   			           pinend->pnext=poutenter;
			           pinend=poutenter; 
				  }
                      
			      if(poutenter==poutbook)
				  {
			        	poutbook=poutbook->pnext;
						poutbook->pnext=NULL;
				        poutenter=poutbook;
				  }
			      else
				  {	
				        platest->pnext=poutenter->pnext;
						poutenter->pnext=NULL;
				        poutenter=platest;
                        platest=poutenter;
	        	        poutenter=poutenter->pnext;
				  }
				  break;
			 }
		}
	}
	if(n==1)
	{
   	    pinend->data->stuID='\0';
        pinend->data->stuname='\0';
        pinend->data->mDate=00.00;
	    AfxMessageBox("还书成功!");
	}
	else
	    AfxMessageBox("你未借此书!");
	UpdateAllViews(NULL);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////


void CP09005435Doc::OnBOOKoldbook() 
{
	// TODO: Add your command handler code here
    int n=0;
	CbookDlg  Dlg;
	Cbooklianbiao * platest;
	pinenter=pinbook;
	poutenter=poutbook;
    platest=pinenter;

	Dlg.DoModal();

	for(;;)
	{
		if(pinenter==NULL)
		    break;
		if(pinenter->data->booknumID==Dlg.m_booknumID)
		{
			++n;
			if(pinenter==pinbook)
			{
				pinbook=pinbook->pnext;
				pinenter=pinenter->pnext;
			}
			else
			{	
				platest->pnext=pinenter->pnext;
	         	pinenter=pinenter->pnext;
			}
		}
		else
		{
			platest=pinenter;
			pinenter=pinenter->pnext;
		}


	}
    
    platest=poutbook;
	for(;;)
	{
		if(poutenter==NULL)
		    break;
		if(poutenter->data->booknumID==Dlg.m_booknumID)
		{
			++n;
			if(poutenter==poutbook)
			{
				poutbook=poutbook->pnext;
				poutenter=poutbook;
			}
			else
			{	
				platest->pnext=poutenter->pnext;
	        	poutenter=poutenter->pnext;
			}
		}
		else
		{
			platest=poutenter;
			poutenter=poutenter->pnext;
		}
	}

	if(n==0)
		AfxMessageBox("图书馆无此书!");
	else
		AfxMessageBox("成功删除此书!");
	UpdateAllViews(NULL);
	
}

⌨️ 快捷键说明

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