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

📄 bro.cpp

📁 用mfc写的图书馆信息管理系统界面
💻 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 + -