?? mainfrm.cpp
字號(hào):
// MainFrm.cpp : implementation of the CMainFrame class
//
#include "stdafx.h"
#include "圖書(shū)館系統(tǒng).h"
#include "LeftTreeView.h"
#include "RightListView.h"
#include "BOOKQUERY.h"
#include "BOOKINFO.h"
#include "BOOKEDIT.h"
#include "OPERATE.h"
#include "STUDEDIT.h"
#include "STUDINFO.h"
#include "STUDQUERY.h"
#include "BOOKLOSED.h"
#include "MainFrm.h"
#include "BORROWQL.h"
#include "Function.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMainFrame
IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
ON_COMMAND(ID_ADD_BOOK, OnAddBook)
ON_COMMAND(ID_ADD_STUD, OnAddStud)
ON_COMMAND(ID_BORROW, OnBorrow)
ON_COMMAND(ID_DELETE_USER, OnDeleteUser)
ON_COMMAND(ID_DELETE_BOOK, OnDeleteBook)
ON_COMMAND(ID_EDIT_BOOK, OnEditBook)
ON_COMMAND(ID_RENEW, OnRenew)
ON_COMMAND(ID_RETURN, OnReturn)
ON_COMMAND(ID_STUD_QL, OnStudQl)
ON_COMMAND(ID_LOSE_BOOK, OnLoseBook)
ON_COMMAND(ID_BORROW_QL, OnBorrowQl)
ON_UPDATE_COMMAND_UI(ID_DELETE_BOOK, OnUpdateDeleteBook)
ON_COMMAND(ID_BOOK_QL, OnBookQl)
ON_COMMAND(ID_FUNCTION_INTRODUCE, OnFunctionIntroduce)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction
CMainFrame::CMainFrame()
{
// TODO: add member initialization code here
}
CMainFrame::~CMainFrame()
{
}
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1; // fail to create
}
// TODO: Delete these three lines if you don't want the toolbar to
// be dockable
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
return 0;
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics
#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
CFrameWnd::AssertValid();
}
void CMainFrame::Dump(CDumpContext& dc) const
{
CFrameWnd::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers
void CMainFrame::OnAddBook()
{
// TODO: Add your command handler code here
BOOKEDIT dlg;
dlg.m_strTitle="添加圖書(shū)";
dlg.bEdit=FALSE;//執(zhí)行添加功能
dlg.DoModal();
}
void CMainFrame::OnAddStud()
{
// TODO: Add your command handler code here
STUDEDIT dlg;
dlg.DoModal();
}
void CMainFrame::OnDeleteUser()
{
// TODO: Add your command handler code here
STUDQUERY dlg;
dlg.m_strTitle="刪除借閱人信息";
dlg.bdelete=TRUE;
dlg.DoModal();
}
void CMainFrame::OnDeleteBook()
{
// TODO: Add your command handler code here
if(bTreeSel)
{
DeleteTree();
bTreeSel=FALSE;
}
else if(bListSel)
{
DeleteList();
bListSel=FALSE;
}
else
{//實(shí)際上這句話(huà)沒(méi)用,因?yàn)椴豢赡軋?zhí)行到此處
AfxMessageBox("不能刪除任何項(xiàng)");
}
}
void CMainFrame::OnUpdateDeleteBook(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
bTreeSel=FALSE;
bListSel=FALSE;
CLeftTreeView* pLeftTreeView=(CLeftTreeView*)m_wndSplitter.GetPane(0,0);
CTreeCtrl& treeCtrl=pLeftTreeView->m_treeCtrl;
HTREEITEM hSelItem=treeCtrl.GetSelectedItem( );
if(hSelItem!=NULL)
{
bTreeSel=TRUE;
}
//列表控件
CRightListView* pListView=(CRightListView*)m_wndSplitter.GetPane(0,0);
CListCtrl& listCtrl=pListView->m_listCtrl;
POSITION pos=listCtrl.GetFirstSelectedItemPosition();
if (pos!=NULL)
{
bListSel=TRUE;
}
//兩種情況下
pCmdUI->Enable(bTreeSel|bListSel);
}
void CMainFrame::OnEditBook()
{
// TODO: Add your command handler code here
BOOKEDIT dlg;
dlg.m_strTitle="編輯圖書(shū)";
dlg.bEdit=TRUE;//執(zhí)行添加功能
dlg.DoModal();
}
void CMainFrame::OnStudQl()
{
// TODO: Add your command handler code here
STUDQUERY dlg;
dlg.bdelete=FALSE;
dlg.m_strTitle="查詢(xún)?nèi)藛T信息";
dlg.DoModal();
}
void CMainFrame::OnBookQl()
{
// TODO: Add your command handler code here
BOOKQUERY dlg;
dlg.DoModal();
}
void CMainFrame::OnBorrowQl()
{
// TODO: Add your command handler code here
CBORROWQL dlg;
dlg.DoModal();
}
void CMainFrame::OnBorrow()
{
// TODO: Add your command handler code here
OPERATE dlg;
dlg.m_option=1;//借書(shū)
dlg.DoModal();
}
void CMainFrame::OnRenew()
{
// TODO: Add your command handler code here
OPERATE dlg;
dlg.m_option=2;//續(xù)借
dlg.DoModal();
}
void CMainFrame::OnReturn()
{
// TODO: Add your command handler code here
OPERATE dlg;
dlg.m_option=3;//還書(shū)
dlg.DoModal();
}
void CMainFrame::OnLoseBook()
{
// TODO: Add your command handler code here
BOOKLOSED dlg;
dlg.DoModal();
}
void CMainFrame::OnFunctionIntroduce()
{
// TODO: Add your command handler code here//功能介紹
CFunction dlg;
dlg.DoModal();
}
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: Add your specialized code here and/or call the base class
if (!m_wndSplitter.CreateStatic(this, 1, 2))
{
TRACE0("Failed to create splitter window\n");
return FALSE;
}
//獲取客戶(hù)區(qū)大小以便調(diào)整視圖的大小
CRect rect;
GetClientRect(&rect);
//首先創(chuàng)建左視圖
if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CLeftTreeView), CSize(rect.Width()/4, 0), pContext))
{
TRACE0("Failed to create left pane view\n");
return FALSE;
}
//左窗格是一個(gè)包含幾個(gè)具有不同視圖的輔助框架窗口
if (!m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CRightListView), CSize(0, 0), pContext))
{
TRACE0("Failed to create right pane frame\n");
return FALSE;
}
CLeftTreeView* pLeftTreeView=(CLeftTreeView*)m_wndSplitter.GetPane(0,0);
pLeftTreeView->m_pRightPaneFrame=(CRightListView*)m_wndSplitter.GetPane(0,1);
return TRUE;
}
void CMainFrame::DeleteTree()
{
CLeftTreeView* pLeftTreeView=(CLeftTreeView*)m_wndSplitter.GetPane(0,0);
CTreeCtrl& treeCtrl=pLeftTreeView->m_treeCtrl;
HTREEITEM hSelItem=treeCtrl.GetSelectedItem( );
if(hSelItem==NULL)
return;
HTREEITEM hParentItem=treeCtrl.GetParentItem(hSelItem);
CString strWhere,strField1,strField2,strSQL,strHint;
if(hParentItem==NULL&& hSelItem!=NULL)
{ //所有聯(lián)系人不允許一下子全部刪除
strHint="不允許一下子全部刪除所有聯(lián)系人!(";
AfxMessageBox(strHint);
return;
}
else if( hParentItem!=NULL&&treeCtrl.GetParentItem(hParentItem)==NULL )
{ //一級(jí)類(lèi)別
CString strFirClass=treeCtrl.GetItemText(hSelItem);
//設(shè)置查詢(xún)條件
strWhere.Format("一級(jí)類(lèi)型='%s'",strFirClass);
strSQL="select * from 圖書(shū)信息情況 where "+strWhere;
strHint.Format("您真的要?jiǎng)h除所有%s的個(gè)人信息嗎?",strFirClass);
}
else
{ //二級(jí)類(lèi)別
CString strFirClass=treeCtrl.GetItemText(treeCtrl.GetParentItem(hSelItem));
CString strSecClass=treeCtrl.GetItemText(hSelItem);
//設(shè)置查詢(xún)條件
strWhere.Format("一級(jí)類(lèi)型='%s' and 二級(jí)類(lèi)型='%s'",\
strFirClass,strSecClass);
strSQL="select * from 圖書(shū)信息情況 where "+strWhere;
strHint.Format("您真的要?jiǎng)h除%s%s的所有個(gè)人信息嗎?",strSecClass,strFirClass);
}
if(MessageBox(strHint,"圖書(shū)信息管理系統(tǒng)",MB_YESNO)==IDNO)
{
return;
}
//刪除表
if(!pLeftTreeView->OpenRecordSet(pLeftTreeView->m_pRecordset,strSQL))
{
AfxMessageBox("信息表沒(méi)有成功打開(kāi)");
return;
}
while(!pLeftTreeView->m_pRecordset->adoEOF)
{
pLeftTreeView->m_pRecordset->Delete(adAffectCurrent);
pLeftTreeView->m_pRecordset->MoveNext();
}
pLeftTreeView->m_pRecordset->Close();
pLeftTreeView->m_pRecordset=NULL;
//更新樹(shù)
pLeftTreeView->ShowTree();
}
void CMainFrame::DeleteList()
{
//獲取列表控件
CRightListView* pListView=(CRightListView*)m_wndSplitter.GetPane(0,1);
CListCtrl& listCtrl=pListView->m_listCtrl;
CString strid,strSQL;
//尋找當(dāng)前選中的記錄的位置
POSITION pos=listCtrl.GetFirstSelectedItemPosition();
if (pos==NULL)
{
//如果沒(méi)有選擇記錄,則提示并退出
AfxMessageBox("請(qǐng)您選擇要?jiǎng)h除的信息!");
return;
}
int iIndex=listCtrl.GetNextSelectedItem(pos);
//表
CString strFirClass,strSecClass;
strid=listCtrl.GetItemText(iIndex,0);
strFirClass=listCtrl.GetItemText(iIndex,3);
strSecClass=listCtrl.GetItemText(iIndex,4);
//確認(rèn)信息
CString strHint;
strHint.Format("是否刪除:%s的個(gè)人信息?",strid);
if (MessageBox(strHint,"刪除確認(rèn)",MB_YESNO|MB_ICONQUESTION)==IDNO)
{
return;
}
//首先從列表中刪除
listCtrl.DeleteItem(iIndex);
strSQL.Format("select * from 圖書(shū)信息情況 where 圖書(shū)ID='%s' \
and 一級(jí)類(lèi)型='%s' and 二級(jí)類(lèi)型='%s'",\
strid,strFirClass,strSecClass);
if(!pListView->OpenRecordSet(pListView->m_pRecordset,strSQL))
{
AfxMessageBox("基本信息沒(méi)有成功打開(kāi)");
return;
}
//其次從數(shù)據(jù)庫(kù)中刪除
pListView->m_pRecordset->Delete(adAffectCurrent);
//從借閱信息表中刪除
strSQL.Format("delete * from 借閱信息表 where 圖書(shū)ID='%s'",strid);
if(!pListView->OpenRecordSet(pListView->m_pRecordset,strSQL))
{
AfxMessageBox("沒(méi)有成功打開(kāi)數(shù)據(jù)表");
return;
}
pListView->m_pRecordset->Close();
pListView->m_pRecordset=NULL;
bListSel=FALSE;
//更新樹(shù)
CLeftTreeView* pLeftTreeView=(CLeftTreeView*)m_wndSplitter.GetPane(0,0);
pLeftTreeView->ShowTree();
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -