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

📄 libraryview.cpp

📁 图书管理系统,数据结构思想,用 C++编写,经测试,可用
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// LibraryView.cpp : implementation of the CLibraryView class
//

#include "stdafx.h"
#include "Library.h"
#include "MainFrm.h"

#include "UserSet.h"
#include "LibraryDoc.h"
#include "LibraryView.h"

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

/////////////////////////////////////////////////////////////////////////////
// CLibraryView

IMPLEMENT_DYNCREATE(CLibraryView, CRecordView)

BEGIN_MESSAGE_MAP(CLibraryView, CRecordView)
	//{{AFX_MSG_MAP(CLibraryView)
	ON_COMMAND(ID_APP_EXIT, OnAppExit)
	ON_COMMAND(ID_BOOK_BORROW, OnBookBorrow)
	ON_COMMAND(ID_BOOK_MANAGE, OnBookManage)
	ON_COMMAND(ID_BOOK_RETURN, OnBookReturn)
	ON_COMMAND(ID_LOGOUT, OnLogout)
	ON_COMMAND(ID_MANAGER_MANAGE, OnManagerManage)
	ON_COMMAND(ID_USER_MANAGE, OnUserManage)
	ON_WM_PAINT()
	ON_NOTIFY(NM_CLICK, IDC_LIST_VIEW, OnClickListView)
	ON_NOTIFY(TCN_SELCHANGE, IDC_SELECT_TAB, OnSelchangeSelectTab)
	ON_WM_DESTROY()
	ON_COMMAND(ID_MOVE_FIRST, OnMoveFirst)
	ON_COMMAND(ID_MOVE_PREV, OnMovePrev)
	ON_COMMAND(ID_MOVE_NEXT, OnMoveNext)
	ON_COMMAND(ID_MOVE_LAST, OnMoveLast)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CRecordView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CRecordView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CRecordView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CLibraryView construction/destruction

CLibraryView::CLibraryView()
	: CRecordView(CLibraryView::IDD)
{
	//{{AFX_DATA_INIT(CLibraryView)
	m_pSet = NULL;
	//}}AFX_DATA_INIT
	// TODO: add construction code here
	//初始化浏览列表的列数为0
	m_nCol=0;
	
}

CLibraryView::~CLibraryView()
{
}

void CLibraryView::DoDataExchange(CDataExchange* pDX)
{
	CRecordView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CLibraryView)
	DDX_Control(pDX, IDC_SELECT_TAB, m_tabCtrl);
	DDX_Control(pDX, IDC_LIST_VIEW, m_ListView);
	//}}AFX_DATA_MAP
}

BOOL CLibraryView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs
	
	return CRecordView::PreCreateWindow(cs);
}

void CLibraryView::OnInitialUpdate()
{
	m_pSet = &GetDocument()->m_userSet;
	CRecordView::OnInitialUpdate();
	GetParentFrame()->RecalcLayout();
	ResizeParentToFit();

	//初始化Tab Control控件
	m_tabCtrl.InsertItem(0,"图书管理");
	m_tabCtrl.InsertItem(1,"用户管理");
	m_tabCtrl.InsertItem(2,"管理员管理");
	m_tabCtrl.InsertItem(3,"借阅管理");	

	//初始化所要显示的数据
	InitListView();
	ListShow();

}

/////////////////////////////////////////////////////////////////////////////
// CLibraryView printing

BOOL CLibraryView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

/////////////////////////////////////////////////////////////////////////////
// CLibraryView diagnostics

#ifdef _DEBUG
void CLibraryView::AssertValid() const
{
	CRecordView::AssertValid();
}

void CLibraryView::Dump(CDumpContext& dc) const
{
	CRecordView::Dump(dc);
}

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

/////////////////////////////////////////////////////////////////////////////
// CLibraryView database support
CRecordset* CLibraryView::OnGetRecordset()
{
	return m_pSet;
}


/////////////////////////////////////////////////////////////////////////////
// CLibraryView message handlers


void CLibraryView::OnAppExit() 
{
	// TODO: Add your command handler code here
	GetParentFrame()->DestroyWindow();
	
}

void CLibraryView::OnBookBorrow() 
{
	// TODO: Add your command handler code here
	CBorrowDlg m_dlg;
	m_dlg.DoModal();
	
}

void CLibraryView::OnBookManage() 
{
	// TODO: Add your command handler code here
	CBookDlg m_dlg;
	m_dlg.DoModal();
	
}

void CLibraryView::OnBookReturn() 
{
	// TODO: Add your command handler code here
	CReturnDlg m_dlg;
	m_dlg.DoModal();
	
}


void CLibraryView::OnLogout() 
{
	// TODO: Add your command handler code here
	CLoginDlg m_dlg;
	SaveLogoutTime();
	GetParentFrame()->CloseWindow();
	m_dlg.DoModal();
	
}

void CLibraryView::OnManagerManage() 
{
	// TODO: Add your command handler code here
	CManageDlg m_dlg;
	m_dlg.DoModal();
	
}

void CLibraryView::OnUserManage() 
{
	// TODO: Add your command handler code here
	CUserDlg m_dlg;
	m_dlg.DoModal();
	
}

void CLibraryView::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	
	// TODO: Add your message handler code here	

	// Do not call CRecordView::OnPaint() for painting messages
}


void CLibraryView::OnClickListView(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	//当鼠标单击列表中的记录时,光标随之移动
	POSITION pos;

	pos=m_ListView.GetFirstSelectedItemPosition();
	if(pos!=NULL)
	{
		int nItem=m_ListView.GetNextSelectedItem(pos);
		m_ListView.SetHotItem(nItem);
	}
	
	*pResult = 0;
}

void CLibraryView::InitListView()
{
	//初始化浏览列表
	int nCurSel;
	nCurSel=m_tabCtrl.GetCurSel();
	for(m_nCol;m_nCol>=0;m_nCol--)
		m_ListView.DeleteColumn(m_nCol);
	switch(nCurSel)
	{
	case 0:
		InitBookShow();		
		//纪录浏览列表的列数
		m_nCol=7;
		break;
	case 1:
		InitUserShow();
		//纪录浏览列表的列数
		m_nCol=9;
		break;
	case 2:
		InitManagerShow();
		//纪录浏览列表的列数
		m_nCol=5;
		break;
	case 3:
		InitBorrowShow();		
		//纪录浏览列表的列数
		m_nCol=7;
		break;
	}//end switch


}

void CLibraryView::ListShow()
{
	//在浏览列表中显示纪录
	int nCurSel;
	nCurSel=m_tabCtrl.GetCurSel();

	switch(nCurSel)
	{
	case 0:
		//在列表中显示图书的信息
		BookShow();
		break;
	case 1:
		//在列表中显示用户的信息
		UserShow();		
		break;
	case 2:
		//在列表中显示管理员的信息
		ManagerShow();		
		break;
	case 3:
		//在列表中显示用户的借书纪录
		BorrowShow();		
		break;
	}//end switch

}

void CLibraryView::BookShow()
{
	//在列表中显示图书的信息
	int i=0;
	int strLength;
	COleDateTime publishTime;
	CString borrowed;
	CString strTime;
	CString bookPrice;
	
	if(!m_BookSet.IsOpen())
	{
		m_BookSet.m_strSort="bookid";
		m_BookSet.m_strFilter="";
		m_BookSet.Open();
		m_BookSet.MoveFirst();
	}
	
	m_ListView.DeleteAllItems();
	while(!m_BookSet.IsEOF())
	{
		m_ListView.InsertItem(i,m_BookSet.m_bookid);
		m_ListView.SetItemText(i,1,m_BookSet.m_bookname);
		m_ListView.SetItemText(i,2,m_BookSet.m_author);
		
		bookPrice=m_BookSet.m_price;
		strLength=bookPrice.GetLength();
		//使价格只保留两位小数
		bookPrice=bookPrice.Left(strLength-2);
		m_ListView.SetItemText(i,3,bookPrice);
		
		nYear=m_BookSet.m_publishtime.GetYear();
		nMonth=m_BookSet.m_publishtime.GetMonth();
		nDay=m_BookSet.m_publishtime.GetDay();
		publishTime.SetDate(nYear,nMonth,nDay);

⌨️ 快捷键说明

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