📄 libraryview.cpp
字号:
// 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 + -