📄 readerdlg.cpp
字号:
// ReaderDlg.cpp : implementation file
//
#include "stdafx.h"
#include "library.h"
#include "ReaderDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CReaderDlg dialog
CReaderDlg::CReaderDlg(CWnd* pView)
: CDialog(CReaderDlg::IDD, pView)
{
//{{AFX_DATA_INIT(CReaderDlg)
m_pView=(CLibraryView*)pView;
m_nReaderID = 0;
m_strRName = _T("");
//}}AFX_DATA_INIT
}
void CReaderDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CReaderDlg)
DDX_Control(pDX, IDC_COMBO_TYPE, m_cOpera);
DDX_Control(pDX, IDC_LIST_BOOK, m_cBookList);
DDX_Text(pDX, IDC_EDIT_RID, m_nReaderID);
DDX_Text(pDX, IDC_EDIT_RNAME, m_strRName);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CReaderDlg, CDialog)
//{{AFX_MSG_MAP(CReaderDlg)
ON_CBN_SELCHANGE(IDC_COMBO_TYPE, OnSelchangeComboType)
ON_BN_CLICKED(IDC_BUT_EXIT, OnButExit)
ON_BN_CLICKED(IDC_BUT_ADD_READER, OnButAddReader)
ON_BN_CLICKED(IDC_BUT_NEXT_READER, OnButNextReader)
ON_BN_CLICKED(IDC_BUT_DEL_READER, OnButDelReader)
ON_BN_CLICKED(IDC_BUT_QUERY_READER, OnButQueryReader)
ON_BN_CLICKED(IDC_BUT_CHANGE_RNAME, OnButChangeRname)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CReaderDlg message handlers
BOOL CReaderDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_cOpera.AddString ("添加");
m_cOpera.AddString ("删除");
m_cOpera.AddString ("改名");
m_cOpera.AddString ("浏览");
m_cOpera.AddString ("查询");
m_cOpera.SetCurSel (0);
GetDlgItem(IDC_BUT_DEL_READER)->EnableWindow(false);
GetDlgItem(IDC_BUT_NEXT_READER)->EnableWindow(false);
GetDlgItem(IDC_BUT_QUERY_READER)->EnableWindow(false);
GetDlgItem(IDC_BUT_CHANGE_RNAME)->EnableWindow(false);
m_cBookList.InsertColumn(0,"图书编号");
m_cBookList.InsertColumn(1,"图书名称");
m_cBookList.SetColumnWidth(0,100);
m_cBookList.SetColumnWidth(1,100);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CReaderDlg::OnSelchangeComboType()
{
// TODO: Add your control notification handler code here
int index=m_cOpera.GetCurSel();
switch(index)
{
case 0://增加读者
GetDlgItem(IDC_BUT_ADD_READER)->EnableWindow(true);
GetDlgItem(IDC_EDIT_RNAME)->EnableWindow(true);
GetDlgItem(IDC_EDIT_RID)->EnableWindow(true);
GetDlgItem(IDC_BUT_DEL_READER)->EnableWindow(false);
GetDlgItem(IDC_BUT_NEXT_READER)->EnableWindow(false);
GetDlgItem(IDC_BUT_QUERY_READER)->EnableWindow(false);
GetDlgItem(IDC_BUT_CHANGE_RNAME)->EnableWindow(false);
break;
case 1://删除读者
GetDlgItem(IDC_EDIT_RNAME)->EnableWindow(false);
GetDlgItem(IDC_EDIT_RID)->EnableWindow(false);
GetDlgItem(IDC_BUT_DEL_READER)->EnableWindow(true);
GetDlgItem(IDC_BUT_ADD_READER)->EnableWindow(false);
GetDlgItem(IDC_BUT_NEXT_READER)->EnableWindow(false);
GetDlgItem(IDC_BUT_QUERY_READER)->EnableWindow(false);
GetDlgItem(IDC_BUT_CHANGE_RNAME)->EnableWindow(false);
break;
case 2://改名
GetDlgItem(IDC_BUT_ADD_READER)->EnableWindow(false);
GetDlgItem(IDC_EDIT_RNAME)->EnableWindow(true);
GetDlgItem(IDC_EDIT_RID)->EnableWindow(false);
GetDlgItem(IDC_BUT_DEL_READER)->EnableWindow(false);
GetDlgItem(IDC_BUT_NEXT_READER)->EnableWindow(false);
GetDlgItem(IDC_BUT_QUERY_READER)->EnableWindow(false);
GetDlgItem(IDC_BUT_CHANGE_RNAME)->EnableWindow(true);
break;
case 3://浏览读者信息
m_pView->ireader=0;
GetDlgItem(IDC_BUT_NEXT_READER)->EnableWindow(true);
GetDlgItem(IDC_EDIT_RNAME)->EnableWindow(false);
m_strRName="";
m_nReaderID=0;
UpdateData(false);
GetDlgItem(IDC_BUT_ADD_READER)->EnableWindow(false);
GetDlgItem(IDC_BUT_DEL_READER)->EnableWindow(false);
GetDlgItem(IDC_BUT_QUERY_READER)->EnableWindow(false);
GetDlgItem(IDC_BUT_CHANGE_RNAME)->EnableWindow(false);
break;
case 4://查询读者信息
m_strRName="";
m_nReaderID=0;
UpdateData(false);
GetDlgItem(IDC_BUT_QUERY_READER)->EnableWindow(true);
GetDlgItem(IDC_EDIT_RNAME)->EnableWindow(false);
GetDlgItem(IDC_EDIT_RID)->EnableWindow(true);
GetDlgItem(IDC_BUT_ADD_READER)->EnableWindow(false);
GetDlgItem(IDC_BUT_DEL_READER)->EnableWindow(false);
GetDlgItem(IDC_BUT_NEXT_READER)->EnableWindow(false);
GetDlgItem(IDC_BUT_CHANGE_RNAME)->EnableWindow(false);
break;
}
}
void CReaderDlg::OnButExit()
{
// TODO: Add your control notification handler code here
TRACE("Enter OnButExit()\n");
m_pView->SendMessage(DESTROY_READER_DLG);
}
void CReaderDlg::OnButAddReader()
{
// TODO: Add your control notification handler code here
UpdateData(true);
TCHAR name[20];
GetDlgItem(IDC_EDIT_RNAME)->GetWindowText(name,20);
int id=m_nReaderID;
int ret=m_pView->rdb.addreader(id,name);
if(ret==1)
AfxMessageBox("添加读者成功");
else
AfxMessageBox("添加读者失败,因为读者编号已经存在");
}
void CReaderDlg::OnButNextReader()
{
// TODO: Add your control notification handler code here
start:
if(m_pView->rdb.noreader())
{
AfxMessageBox("一个读者都没有");
return;
}
int top=m_pView->rdb.gettop();
Reader* preader=m_pView->rdb.getreader(m_pView->ireader);
m_pView->ireader++;
if(m_pView->ireader==top)
m_pView->ireader=0;
if(preader==NULL)
{
goto start;
}
m_strRName=preader->getname();
m_nReaderID=preader->getno();
UpdateData(false);
ShowBorrowBook(preader);
}
void CReaderDlg::OnButDelReader()
{
// TODO: Add your control notification handler code here
UpdateData(true);
int id=m_nReaderID;
Reader* r=m_pView->rdb.query(id);
if(r==NULL)
{
AfxMessageBox("该读者不存者");
return;
}
if(r->ishasbook())
{
AfxMessageBox("该读者还有书未还,不能删除");
return;
}
r->delreader();
AfxMessageBox("删除成功");
}
void CReaderDlg::OnButQueryReader()
{
// TODO: Add your control notification handler code here
UpdateData(true);
Reader *preader=m_pView->rdb.query(m_nReaderID);
if(preader==NULL)
{
AfxMessageBox("该读者不存者");
return;
}
m_strRName=preader->getname();
UpdateData(false);
ShowBorrowBook(preader);
}
void CReaderDlg::OnButChangeRname()
{
// TODO: Add your control notification handler code here
UpdateData(true);
int readerid=m_nReaderID;
CString name=m_strRName;
Reader* r=m_pView->rdb.query(readerid);
if(r==NULL)
{
AfxMessageBox("该读者不存在");
return;
}
r->setname(name.GetBuffer(20));
name.ReleaseBuffer();
AfxMessageBox("改名成功");
}
void CReaderDlg::ShowBorrowBook(Reader * reader)
{
if(reader==NULL)
return;
int *p=reader->getborbook();
CString bid;
CString bname;
int col=0;
Book* b=NULL;
m_cBookList.DeleteAllItems();
for(int i=0;i<Maxbor;i++)
{
if(p[i]!=0)
{
bid.Format("%d",p[i]);
m_cBookList.InsertItem(col,bid);
b=m_pView->bdb.query(p[i]);
bname=b->getname();
m_cBookList.SetItemText(col,1,bname);
col++;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -