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

📄 adminmanage.cpp

📁 实现一个图书馆管理系统
💻 CPP
字号:
// AdminManage.cpp : implementation file
//

#include "stdafx.h"
#include "library.h"
#include "AdminManage.h"
#include "UserSet.h"
#include "BookSet.h"
#include "BorrowSet.h"
#include "Addb.h"
#include "Addr.h"
#include "Modifyb.h"
#include "Modifyr.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CAdminManage
extern CDatabase db;
void CAdminManage::RefreshBookList();
void CAdminManage::RefreshReaderList();

IMPLEMENT_DYNCREATE(CAdminManage, CFormView)

CAdminManage::CAdminManage()
	: CFormView(CAdminManage::IDD)
{
	//{{AFX_DATA_INIT(CAdminManage)
	m_bookno = _T("");
	m_readerid = _T("");
	m_prid = _T("");
	//}}AFX_DATA_INIT
}

CAdminManage::~CAdminManage()
{
}

void CAdminManage::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAdminManage)
	DDX_Control(pDX, IDC_LIST_READER, m_readermanage);
	DDX_Control(pDX, IDC_LIST_BOOK, m_bookmanage);
	DDX_Text(pDX, IDC_EDIT_BBNO, m_bookno);
	DDV_MaxChars(pDX, m_bookno, 10);
	DDX_Text(pDX, IDC_EDIT_BRID, m_readerid);
	DDV_MaxChars(pDX, m_readerid, 10);
	DDX_Text(pDX, IDC_EDIT_PRID, m_prid);
	DDV_MaxChars(pDX, m_prid, 10);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CAdminManage, CFormView)
	//{{AFX_MSG_MAP(CAdminManage)
	ON_BN_CLICKED(IDC_BUT_ADDB, OnButAddb)
	ON_BN_CLICKED(IDC_BUT_MODIFYB, OnButModifyb)
	ON_BN_CLICKED(IDC_BUT_DELETEB, OnButDeleteb)
	ON_BN_CLICKED(IDC_BUT_DELETER, OnButDeleter)
	ON_BN_CLICKED(IDC_BUT_ADDR, OnButAddr)
	ON_BN_CLICKED(IDC_BUT_MODIFYR, OnButModifyr)
	ON_BN_CLICKED(IDC_BUT_BORROW, OnButBorrow)
	ON_BN_CLICKED(IDC_BUT_RETURN, OnButReturn)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CAdminManage diagnostics

#ifdef _DEBUG
void CAdminManage::AssertValid() const
{
	CFormView::AssertValid();
}

void CAdminManage::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CAdminManage message handlers

void CAdminManage::OnInitialUpdate() 
{
	CFormView::OnInitialUpdate();
	
	// TODO: Add your specialized code here and/or call the base class
	m_readermanage.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES  );
	m_readermanage.InsertColumn(0,"ID");
	m_readermanage.InsertColumn(1,"姓名");
	m_readermanage.InsertColumn(2,"班级");
	m_readermanage.InsertColumn(3,"性别");
	m_readermanage.SetColumnWidth(0,100);
	m_readermanage.SetColumnWidth(1,100);
	m_readermanage.SetColumnWidth(2,100);
	m_readermanage.SetColumnWidth(3,100);
	RefreshReaderList();

	m_bookmanage.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES  );
	m_bookmanage.InsertColumn(0,"书号");
	m_bookmanage.InsertColumn(1,"书名");
	m_bookmanage.InsertColumn(2,"作者");
	m_bookmanage.InsertColumn(3,"出版社");
	m_bookmanage.InsertColumn(4,"出版日期");
	m_bookmanage.InsertColumn(5,"状态");
	m_bookmanage.SetColumnWidth(0,100);
	m_bookmanage.SetColumnWidth(1,100);
	m_bookmanage.SetColumnWidth(2,100);
	m_bookmanage.SetColumnWidth(3,160);
	m_bookmanage.SetColumnWidth(4,100);
	m_bookmanage.SetColumnWidth(5,100);
	RefreshBookList();
}

void CAdminManage::RefreshBookList()
{
	m_bookmanage.DeleteAllItems();
	CBookSet *book=new CBookSet(&db);
	book->Open();
	int j=0;
	if(book->IsEOF())
		return;
	book->MoveFirst();
	book->m_BookNo.TrimRight();
	book->m_Name.TrimRight();
	book->m_Author.TrimRight();
	book->m_PublishingHouse.TrimRight();
	book->m_PublishingDate.TrimRight();
	book->m_State.TrimRight();
	m_bookmanage.InsertItem(j,book->m_BookNo);
	m_bookmanage.SetItemText(j,1,book->m_Name);
	m_bookmanage.SetItemText(j,2,book->m_Author);
	m_bookmanage.SetItemText(j,3,book->m_PublishingHouse);
	m_bookmanage.SetItemText(j,4,book->m_PublishingDate);
	m_bookmanage.SetItemText(j,5,book->m_State);
	j++;

	book->MoveNext();
	while(!book->IsEOF())
	{
		book->m_BookNo.TrimRight();
		book->m_Name.TrimRight();
		book->m_Author.TrimRight();
		book->m_PublishingHouse.TrimRight();
		book->m_PublishingDate.TrimRight();
		book->m_State.TrimRight();
		m_bookmanage.InsertItem(j,book->m_BookNo);
		m_bookmanage.SetItemText(j,1,book->m_Name);
		m_bookmanage.SetItemText(j,2,book->m_Author);
		m_bookmanage.SetItemText(j,3,book->m_PublishingHouse);
		m_bookmanage.SetItemText(j,4,book->m_PublishingDate);
		m_bookmanage.SetItemText(j,5,book->m_State);
		j++;
		book->MoveNext();
	}
	book->Close();
}

void CAdminManage::RefreshReaderList()
{
	m_readermanage.DeleteAllItems();
	CUserSet *user=new CUserSet(&db);
	user->Open();
	int i=0;
	user->MoveFirst();
	if(user->m_Authority==0)
	{
		user->m_UserID.TrimRight();
		user->m_Name.TrimRight();
		user->m_Class.TrimRight();
		CString sex;
		if(user->m_Sex==1) 
			sex="男";
		else 
			sex="女";
		
		m_readermanage.InsertItem(i,user->m_UserID);
		m_readermanage.SetItemText(i,1,user->m_Name);
		m_readermanage.SetItemText(i,2,user->m_Class);
		m_readermanage.SetItemText(i,3,sex);
		i++;
	}
	user->MoveNext();
	while(!user->IsEOF())
	{
		if(user->m_Authority==0)
		{
			user->m_UserID.TrimRight();
			user->m_Name.TrimRight();
			user->m_Class.TrimRight();
			CString sex;
			if(user->m_Sex==1) 
				sex="男";
			else 
				sex="女";
			
			m_readermanage.InsertItem(i,user->m_UserID);
			m_readermanage.SetItemText(i,1,user->m_Name);
			m_readermanage.SetItemText(i,2,user->m_Class);
			m_readermanage.SetItemText(i,3,sex);
			i++;
		}
		user->MoveNext();
	}
	user->Close();
}

void CAdminManage::OnButAddb() 
{
	// TODO: Add your control notification handler code here
	CAddb dlg;
	dlg.pview=this;
	dlg.DoModal();
}

void CAdminManage::OnButModifyb() 
{
	// TODO: Add your control notification handler code here
	int row=m_bookmanage.GetSelectionMark();
	if(row==-1)
	{
		MessageBox("请选择一个记录进行操作!");
		return;
	}
	else
	{
		CModifyb dlg;
		dlg.pview=this;
		dlg.DoModal();
	}
}

void CAdminManage::OnButDeleteb() 
{
	// TODO: Add your control notification handler code here
	int row=m_bookmanage.GetSelectionMark();
	if(row==-1)
	{
		MessageBox("请先选择一条记录再操作!");
		return;
	}
	CString num;
	num=m_bookmanage.GetItemText(row,0);
	CBookSet *book=new CBookSet(&db);
	book->Open();
	book->MoveFirst();
	book->m_BookNo.TrimRight();
	int flag=0;
	if(num!=book->m_BookNo)
	{
		book->MoveNext();
		book->m_BookNo.TrimRight();
		while(!book->IsEOF() && num!=book->m_BookNo)
		{
			book->MoveNext();
			book->m_BookNo.TrimRight();
		}
		flag=1;
	}
	int ret;
	ret=MessageBox("确定删除?","确认操作",MB_OKCANCEL|MB_ICONQUESTION);
	if(ret==IDOK)
	{
		if(book->m_State!=2)
		{
			MessageBox("该书的状态不允许被删除!");
			book->Close();
			return;
		}
		book->Delete();
		if(flag==0)
			book->MoveNext();
		else
			book->MovePrev();
		MessageBox("删除成功!");
		RefreshBookList();
	}
	book->Close();
}

void CAdminManage::OnButDeleter() 
{
	// TODO: Add your control notification handler code here
	int row=m_readermanage.GetSelectionMark();
	if(row==-1)
	{
		MessageBox("请先选择一条记录再操作!");
		return;
	}
	CString num;
	num=m_readermanage.GetItemText(row,0);
	CUserSet *user=new CUserSet(&db);
	user->Open();
	user->MoveFirst();
	user->m_UserID.TrimRight();
	int flag=0;
	if(num!=user->m_UserID)
	{
		user->MoveNext();
		user->m_UserID.TrimRight();
		while(!user->IsEOF() && num!=user->m_UserID)
		{
			user->MoveNext();
			user->m_UserID.TrimRight();
		}
		flag=1;
	}
	int ret;
	ret=MessageBox("确定删除?","确认操作",MB_OKCANCEL|MB_ICONQUESTION);
	if(ret==IDOK)
	{
		CBorrowSet *borrow=new CBorrowSet(&db);
		borrow->Open();
		if(!borrow->IsBOF() && !borrow->IsEOF())
		{
			borrow->MoveFirst();
			borrow->m_UserID.TrimRight();
			if(borrow->m_UserID!=user->m_UserID)
			{
				borrow->MoveNext();
				borrow->m_UserID.TrimRight();
				while(!borrow->IsEOF() || borrow->m_UserID!=user->m_UserID)
				{
					borrow->MoveNext();
					borrow->m_UserID.TrimRight();
				}
			}
			if(!borrow->IsEOF())
			{
				MessageBox("对不起!\n该读者还有未归还的图书\n不能删除!");
				borrow->Close();
				user->Close();
				return;
			}
		}
		user->Delete();
		if(flag==0)
			user->MoveNext();
		else
			user->MovePrev();
		borrow->Close();
		MessageBox("删除成功!");
		RefreshReaderList();
	}
	user->Close();
}

void CAdminManage::OnButAddr() 
{
	// TODO: Add your control notification handler code here
	CAddr dlg;
	dlg.pview=this;
	dlg.DoModal();
}

void CAdminManage::OnButModifyr() 
{
	// TODO: Add your control notification handler code here
	int row=m_readermanage.GetSelectionMark();
	if(row==-1)
	{
		MessageBox("请选择一个记录进行操作!");
		return;
	}
	else
	{
		CModifyr dlg;
		dlg.pview=this;
		dlg.DoModal();
	}
}

void CAdminManage::OnButBorrow() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
	CUserSet *user=new CUserSet(&db);
	user->Open();
	user->MoveFirst();
	user->m_UserID.TrimRight();
	if(m_readerid!=user->m_UserID)
	{
		user->MoveNext();
		user->m_UserID.TrimRight();
		while(!user->IsEOF() && m_readerid!=user->m_UserID)
		{
			user->MoveNext();
			user->m_UserID.TrimRight();
		}
	}
	if(user->IsEOF())
	{
		MessageBox("对不起!\n该读者不存在!");
		user->Close();
		return;
	}


	CBookSet *book=new CBookSet(&db);
	book->Open();
	book->MoveFirst();
	book->m_BookNo.TrimRight();
	if(m_bookno!=book->m_BookNo)
	{
		book->MoveNext();
		book->m_BookNo.TrimRight();
		while(!book->IsEOF() && m_bookno!=book->m_BookNo)
		{
			book->MoveNext();
			book->m_BookNo.TrimRight();
		}
	}
	if(book->IsEOF())
	{
		MessageBox("对不起!\n该图书不存在!");
		book->Close();
		user->Close();
		return;
	}
	book->m_State.TrimRight();
	if(book->m_State=="丢失" ||book->m_State=="借出")
	{
		CString info="对不起!\n该图书已"+book->m_State;
		MessageBox(info);
		return;
	}
	CBorrowSet *borrow=new CBorrowSet(&db);
	borrow->Open();
	if(borrow->CanAppend() && book->CanUpdate())
	{
		borrow->AddNew();
		borrow->m_UserID=user->m_UserID;
		borrow->m_BookNo=book->m_BookNo;
		borrow->m_Name=book->m_Name;
		CTime t=CTime::GetCurrentTime();
		CTimeSpan time(30,0,0,0);
		CString date1,date2;
		date1.Format("%u/%2u/%2u",t.GetYear(),t.GetMonth(),t.GetDay());
		borrow->m_DateOfBorrow=date1;
		t+=time;
		date2.Format("%u/%2u/%2u",t.GetYear(),t.GetMonth(),t.GetDay());
		borrow->m_DateOfReversion=date2;
		borrow->Update();

		book->Edit();
		book->m_State="借出";
		book->Update();
		RefreshBookList();
		MessageBox("成功借阅!");
	}
	else
		MessageBox("借阅失败!");
	borrow->Close();
	book->Close();
	user->Close();
	SetDlgItemText(IDC_EDIT_BRID,_T(""));
	SetDlgItemText(IDC_EDIT_BBNO,_T(""));
}

void CAdminManage::OnButReturn() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
	CUserSet *user=new CUserSet(&db);
	user->Open();
	user->MoveFirst();
	user->m_UserID.TrimRight();
	int flag=0;
	if(m_readerid!=user->m_UserID)
	{
		user->MoveNext();
		user->m_UserID.TrimRight();
		while(!user->IsEOF() && m_readerid!=user->m_UserID)
		{
			user->MoveNext();
			user->m_UserID.TrimRight();
		}
		flag=1;
	}
	if(user->IsEOF())
	{
		MessageBox("对不起!\n该读者不存在!");
		return;
	}


	CBookSet *book=new CBookSet(&db);
	book->Open();
	book->MoveFirst();
	book->m_BookNo.TrimRight();
	if(m_bookno!=book->m_BookNo)
	{
		book->MoveNext();
		book->m_BookNo.TrimRight();
		while(!book->IsEOF() && m_bookno!=book->m_BookNo)
		{
			book->MoveNext();
			book->m_BookNo.TrimRight();
		}
	}
	if(book->IsEOF())
	{
		MessageBox("对不起!\n该图书不存在!");
		return;
	}
	CBorrowSet *borrow=new CBorrowSet(&db);
	borrow->Open();
	if(borrow->CanUpdate())
	{
		borrow->Delete();
		if(flag==0)
			borrow->MoveNext();
		else
			borrow->MovePrev();
		book->Edit();
		book->m_State="在馆";
		book->Update();
		RefreshBookList();
		MessageBox("成功归还!");
	}
	SetDlgItemText(IDC_EDIT_BRID,_T(""));
	SetDlgItemText(IDC_EDIT_BBNO,_T(""));
	borrow->Requery();
	book->Close();
	borrow->Close();
	user->Close();
}

BOOL CAdminManage::PreCreateWindow(CREATESTRUCT& cs) 
{
	// TODO: Add your specialized code here and/or call the base class
	//cs.lpszClass="nick";
	return CFormView::PreCreateWindow(cs);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -