📄 bro.cpp
字号:
// Bro.cpp : implementation file
//
#include "stdafx.h"
#include "LibMgr.h"
#include "Bro.h"
#include "LibMgrDlg.h"
//#include "BOOKM.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern BLink BHead;
extern linkN;
extern RLink Head;
extern linkNo;
/////////////////////////////////////////////////////////////////////////////
// CBro dialog
CBro::CBro(CWnd* pParent /*=NULL*/)
: CDialog(CBro::IDD, pParent)
{
//{{AFX_DATA_INIT(CBro)
m_bnum = _T("");
m_rnum = _T("");
//}}AFX_DATA_INIT
}
void CBro::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CBro)
DDX_Control(pDX, IDC_BROLIST, m_bro);
DDX_Text(pDX, IDC_BNUMEDIT, m_bnum);
DDX_Text(pDX, IDC_RNUMEDIT, m_rnum);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CBro, CDialog)
//{{AFX_MSG_MAP(CBro)
ON_NOTIFY(NM_CLICK, IDC_BROLIST, OnClickBrolist)
ON_BN_CLICKED(IDC_LBTN, OnLbtn)
ON_BN_CLICKED(IDC_SHOWALL, OnShowall)
ON_BN_CLICKED(IDC_BROBTN, OnBrobtn)
ON_BN_CLICKED(IDC_YUBTN, OnYubtn)
ON_BN_CLICKED(IDC_CANCLE, OnCancle)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CBro message handlers
BOOL CBro::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_bro.SetExtendedStyle(LVS_EX_FULLROWSELECT);
CRect rt;
m_bro.GetClientRect(&rt);
m_bro.InsertColumn(0,"图书编号",LVCFMT_LEFT,rt.right/9,0);
m_bro.InsertColumn(1,"中图分类号",LVCFMT_LEFT,rt.right/9,0);
m_bro.InsertColumn(2,"书名",LVCFMT_LEFT,rt.right/9,0);
m_bro.InsertColumn(3,"作者",LVCFMT_LEFT,rt.right/9,0);
m_bro.InsertColumn(4,"出版社",LVCFMT_LEFT,rt.right/9,0);
m_bro.InsertColumn(5,"出版日期",LVCFMT_LEFT,rt.right/9,0);
m_bro.InsertColumn(6,"定价",LVCFMT_LEFT,rt.right/9,0);
m_bro.InsertColumn(7,"借阅状态",LVCFMT_LEFT,rt.right/9,0);
m_bro.InsertColumn(8,"预约",LVCFMT_LEFT,rt.right/9,0);
BLink p;
p=BHead->Next;
CString t,s;
int i=0;
m_bro.DeleteAllItems();
while(p!=NULL)
{
if(p->onshelf==0) s="在库";
else s="借出";
if(p->tag==0) t="可";
else t="否";
m_bro.InsertItem(i,p->Num);
m_bro.SetItemText(i,1,p->Lable);
m_bro.SetItemText(i,2,p->Name);
m_bro.SetItemText(i,3,p->Author);
m_bro.SetItemText(i,4,p->Pub);
m_bro.SetItemText(i,5,p->Date);
m_bro.SetItemText(i,6,p->Price);
m_bro.SetItemText(i,7,s);
m_bro.SetItemText(i,8,t);
p=p->Next;
i=i+1;
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CBro::OnClickBrolist(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
int i=m_bro.GetSelectionMark();
m_bnum=m_bro.GetItemText(i,0);
UpdateData(FALSE);
*pResult = 0;
}
void CBro::OnLbtn()
{
// TODO: Add your control notification handler code here
CString num,s,t;
UpdateData(TRUE);
num=m_bnum;
BLink temp;
//Head=book.GetHead();
temp=book.Find(BHead,num);
if(temp!=NULL)
{
m_bro.DeleteAllItems();
if(temp->onshelf==0) s="在库";
else s="借出";
if(temp->tag==0) t="可";
else t="否";
m_bro.InsertItem(0,temp->Num);
m_bro.SetItemText(0,1,temp->Lable);
m_bro.SetItemText(0,2,temp->Name);
m_bro.SetItemText(0,3,temp->Author);
m_bro.SetItemText(0,4,temp->Pub);
m_bro.SetItemText(0,5,temp->Date);
m_bro.SetItemText(0,6,temp->Price);
m_bro.SetItemText(0,7,s);
m_bro.SetItemText(0,8,t);
SetDlgItemText(IDC_BNUMEDIT,temp->Num);//在编辑框中显示查找到的图书信息
}
else
{
MessageBox("无法找到该图书!");
SetDlgItemText(IDC_BNUMEDIT,"");//将各编辑框清空,以便下次输入
}
}
void CBro::OnShowall()
{
// TODO: Add your control notification handler code here
BLink p;
p=BHead->Next;
CString t,s;
int i=0;
m_bro.DeleteAllItems();
while(p!=NULL)
{
if(p->onshelf==0) s="在库";
else s="借出";
if(p->tag==0) t="可";
else t="否";
m_bro.InsertItem(i,p->Num);
m_bro.SetItemText(i,1,p->Lable);
m_bro.SetItemText(i,2,p->Name);
m_bro.SetItemText(i,3,p->Author);
m_bro.SetItemText(i,4,p->Pub);
m_bro.SetItemText(i,5,p->Date);
m_bro.SetItemText(i,6,p->Price);
m_bro.SetItemText(i,7,s);
m_bro.SetItemText(i,8,t);
p=p->Next;
i=i+1;
}
SetDlgItemText(IDC_BNUMEDIT,"");//将各编辑框清空,以便下次输入
}
void CBro::OnBrobtn()
{
// TODO: Add your control notification handler code here
CString bnum,rnum;
UpdateData(TRUE);
bnum=m_bnum;
rnum=m_rnum;
BOOL R;
R=FALSE;
if(bnum=="") MessageBox("请输入图书编号"); //输入不能为空
else if(rnum=="") MessageBox("请输入借书证号");
else R=TRUE;
if(R)
{
BLink p1;
RLink p2;
p1=book.Find(BHead,bnum);
p2=reader.Find(Head,rnum);
if(p1!=NULL&&p2!=NULL)
{
if(p1->onshelf)
{
MessageBox("该书已借出!无法借阅!");
}
else if(p1->tag&&p1->YNum!=rnum)
{
MessageBox("该书已预约!无法借阅!");
}
else if(p2->sum>7)
{
MessageBox("已借书7本!无法再借阅!");
}
else
{
p1->onshelf=1;
p2->sum++;
p1->RNum=rnum;
OnShowall();
}
}
else
{
MessageBox("读者信息有误或所借图书不存在!");
}
}
}
void CBro::OnYubtn()
{
// TODO: Add your control notification handler code here
CString bnum,rnum;
UpdateData(TRUE);
bnum=m_bnum;
rnum=m_rnum;
BOOL R;
R=FALSE;
if(bnum=="") MessageBox("请输入图书编号"); //输入不能为空
else if(rnum=="") MessageBox("请输入借书证号");
else R=TRUE;
if(R)
{
BLink p1;
RLink p2;
p1=book.Find(BHead,bnum);
p2=reader.Find(Head,rnum);
if(p1!=NULL&&p2!=NULL)
{
if(p1->tag)
{
MessageBox("该书已被预约!");
}
else if(p2->sum>7)
{
MessageBox("已借书7本!无法再借阅!");
}
else
{
p1->YNum=rnum;
p1->tag=1;
OnShowall();
}
}
else
{
MessageBox("读者信息有误或所借图书不存在!");
}
}
}
void CBro::OnCancle()
{
// TODO: Add your control notification handler code here
CString bnum,rnum;
UpdateData(TRUE);
bnum=m_bnum;
rnum=m_rnum;
BOOL R;
R=FALSE;
if(bnum=="") MessageBox("请输入图书编号"); //输入不能为空
else if(rnum=="") MessageBox("请输入借书证号");
else R=TRUE;
if(R)
{
BLink p1;
RLink p2;
p1=book.Find(BHead,bnum);
p2=reader.Find(Head,rnum);
if(p1!=NULL&&p2!=NULL)
{
if(p1->tag==0)
{
MessageBox("该书未被预约!");
}
else if(p1->YNum!=rnum)
{
MessageBox("未预约该书!");
}
else
{
p1->YNum="";
p1->tag=0;
OnShowall();
}
}
else
{
MessageBox("读者信息有误或所借图书不存在!");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -