📄 p09005435doc.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 + -