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

📄 libraryview.cpp

📁 一个图书管理程序 其中数据库部分需要自己设置 具体设置请参看源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// libraryView.cpp : ClibraryView 类的实现
//
#pragma once
#include "stdafx.h"
#include "library.h"
#include "CardApply.h"
#include "CardDrop.h"
#include "BookBorrowDlg.h"
#include "BookReturnDlg.h"
#include "BookDeleteDlg.h"
#include "BookQueryDlg.h"
#include "BookBorrowed.h"
#include "BookinDlg.h"
#include "book.h"
#include "borrow.h"
#include "book.h"
#include "card.h"
#include "MainFrm.h"
#include "librarySet.h"
#include "libraryDoc.h"
#include "libraryView.h"
#include "LoginDialog.h"
#include "Info.h"
#include <iostream>
#include <fstream>
using namespace std;

CString AdministratorID;


void Book_List(Cbook &m_bookSet, CListCtrl& ListCtrl);
void Card_List(Ccard &m_cardSet, CListCtrl& ListCtrl);
static bool _AtlSimpleFloatParse(LPCTSTR lpszText, double& d);

IMPLEMENT_DYNCREATE(ClibraryView, CRecordView)

BEGIN_MESSAGE_MAP(ClibraryView, CRecordView)
	ON_BN_CLICKED(IDC_BUTTON2, &ClibraryView::OnBnClickedButton2)
	ON_COMMAND(ID_CARD_END, &ClibraryView::OnCardEnd)
	ON_COMMAND(ID_Book_Return, &ClibraryView::OnBookReturn)
	ON_COMMAND(ID_Book_In, &ClibraryView::OnBookIn)
	ON_COMMAND(ID_Book_Borrow, &ClibraryView::OnBookBorrow)
	ON_COMMAND(ID_CARD_APPLY, &ClibraryView::OnCardApply)
	ON_COMMAND(ID_logout, &ClibraryView::Onlogout)
	ON_COMMAND(ID_Query_Book, &ClibraryView::OnQueryBook)
	ON_COMMAND(ID_Exit, &ClibraryView::OnExit)
	ON_COMMAND(ID_Query_user, &ClibraryView::OnQueryuser)
	ON_COMMAND(ID_Batch_in, &ClibraryView::OnBatchin)
	ON_COMMAND(ID_APP_ABOUT, &ClibraryView::OnAppAbout)
	ON_UPDATE_COMMAND_UI(ID_CARD_APPLY, &ClibraryView::OnUpdateCardApply)
	ON_UPDATE_COMMAND_UI(ID_Book_Borrow, &ClibraryView::OnUpdateBookBorrow)
	ON_UPDATE_COMMAND_UI(ID_CARD_END, &ClibraryView::OnUpdateCardEnd)
	ON_UPDATE_COMMAND_UI(ID_Book_In, &ClibraryView::OnUpdateBookIn)
	ON_UPDATE_COMMAND_UI(ID_Book_Return, &ClibraryView::OnUpdateBookReturn)
	ON_UPDATE_COMMAND_UI(ID_logout, &ClibraryView::OnUpdatelogout)
	ON_COMMAND(ID_BOOK_DELETE, &ClibraryView::OnBookDelete)
	ON_UPDATE_COMMAND_UI(ID_BOOK_DELETE, &ClibraryView::OnUpdateBookDelete)
	ON_UPDATE_COMMAND_UI(ID_Batch_in, &ClibraryView::OnUpdateBatchin)
END_MESSAGE_MAP()

// ClibraryView 构造/析构

ClibraryView::ClibraryView()
	: CRecordView(ClibraryView::IDD)
{
	m_pSet = NULL;
	// TODO: 在此处添加构造代码
}

ClibraryView::~ClibraryView()
{
}

void ClibraryView::DoDataExchange(CDataExchange* pDX)
{
	CRecordView::DoDataExchange(pDX);
	// 可以在此处插入 DDX_Field* 函数以将控件“连接”到数据库字段,例如
	// DDX_FieldText(pDX, IDC_MYEDITBOX, m_pSet->m_szColumn1, m_pSet);
	// DDX_FieldCheck(pDX, IDC_MYCHECKBOX, m_pSet->m_bColumn2, m_pSet);
	// 有关更多信息,请参阅 MSDN 和 ODBC 示例

	DDX_Control(pDX, IDC_LIST_BOOK, m_BookListCtrl);
	DDX_Control(pDX, IDC_LIST_CARD, m_CardListCtrl);
}

BOOL ClibraryView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: 在此处通过修改
	//  CREATESTRUCT cs 来修改窗口类或样式

	return CRecordView::PreCreateWindow(cs);
}





// ClibraryView 诊断

#ifdef _DEBUG
void ClibraryView::AssertValid() const
{
	CRecordView::AssertValid();
}

void ClibraryView::Dump(CDumpContext& dc) const
{
	CRecordView::Dump(dc);
}

ClibraryDoc* ClibraryView::GetDocument() const // 非调试版本是内联的
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(ClibraryDoc)));
	return (ClibraryDoc*)m_pDocument;
}
#endif //_DEBUG


// ClibraryView 数据库支持
CRecordset* ClibraryView::OnGetRecordset()
{
	return m_pSet;
}


void ClibraryView::OnInitialUpdate()
{
	m_pSet = &GetDocument()->m_librarySet;
	CRecordView::OnInitialUpdate();

	LoginDialog LoginDialog;
	bool LoginSuccess;
	bool Anonymous;
	CString tmp;
	CMainFrame *pMainWnd = (CMainFrame *)AfxGetMainWnd();

	// 显示登陆对话框
	while (true)
	{
		if ((LoginDialog.DoModal()) == IDOK)
		{
			if (LoginDialog.m_CheckAnonymous)  // 匿名登陆
			{
				// 设置主框架标题
				pMainWnd->SetWindowText((CString)("图书馆管理系统 - 匿名登陆"));
				Anonymous = true;
				AdministratorID = "";
				break;
			}

			// 构造查询语句查询对应的理员及其密码
			tmp = (CString)("ID like '") + LoginDialog.m_administratorID + (CString)("' and password like '")
				+ LoginDialog.m_password + (CString)("'");
			m_pSet->m_strFilter = tmp;
			m_pSet->Requery();

			LoginSuccess = !m_pSet->IsEOF();   // 若管理员不存在或密码错误,则m_pSet->IsEOF() = true

			if (LoginSuccess)
			{
				
				pMainWnd->SetWindowText((CString)("图书馆管理系统 - 管理员登陆") + LoginDialog.m_administratorID);
				Anonymous = false;
				AdministratorID = LoginDialog.m_administratorID;
				break;
			}
			else
				MessageBox(_T("管理员不存在或密码错误!"), _T("错误"), MB_OK | MB_ICONERROR);
		}
		else
		{
			exit(0);
		}
	}
	// 匿名登陆
	if (Anonymous)
	{
		this->anonymous=true;
		AnonymousLogin();
	}
	// 管理员登陆
	else
	{
		this->anonymous=false;
		AdministratorLogin();
	}

}


void Book_List(Cbook &m_bookSet, CListCtrl& ListCtrl)
{
	if (!m_bookSet.IsOpen())
		m_bookSet.Open();
	m_bookSet.m_strSort = "bno desc";
	m_bookSet.Requery();

	CString tmp;
	int Item;
	// 删除原来的项目,显示查询结果
	ListCtrl.DeleteAllItems();

	while (!m_bookSet.IsEOF())
	{
		Item = ListCtrl.InsertItem(0,(LPCTSTR)(CString)m_bookSet.m_bno);

		ListCtrl.SetItemText(Item, 1, (LPCTSTR)(CString)m_bookSet.m_category);

		ListCtrl.SetItemText(Item, 2, (LPCTSTR)(CString)m_bookSet.m_title);

		ListCtrl.SetItemText(Item, 3, (LPCTSTR)(CString)m_bookSet.m_press);

		tmp.Format(_T("%d"), m_bookSet.m_year);
		ListCtrl.SetItemText(Item, 4, (LPCTSTR)tmp);

		ListCtrl.SetItemText(Item, 5, (LPCTSTR)(CString)m_bookSet.m_author);

		tmp.Format(_T("%.2lf"), m_bookSet.m_price);
		ListCtrl.SetItemText(Item, 6, (LPCTSTR)tmp);


		tmp.Format(_T("%d"), m_bookSet.m_total);
		ListCtrl.SetItemText(Item, 7, (LPCTSTR)tmp);

		tmp.Format(_T("%d"), m_bookSet.m_stock);
		ListCtrl.SetItemText(Item, 8, (LPCTSTR)tmp);

		m_bookSet.MoveNext();
	}
}

// 查询并列表显示借书卡
void Card_List(Ccard &m_cardSet, CListCtrl& ListCtrl)
{
	if (!m_cardSet.IsOpen())
		m_cardSet.Open();
	m_cardSet.m_strSort = "cno desc";
	m_cardSet.Requery();

	int Item;
	
	ListCtrl.DeleteAllItems();

	while (!m_cardSet.IsEOF())
	{
		Item = ListCtrl.InsertItem(0,(LPCTSTR)(CString)m_cardSet.m_cno);

		ListCtrl.SetItemText(Item, 1, (LPCTSTR)(CString)m_cardSet.m_name);

		ListCtrl.SetItemText(Item, 2, (LPCTSTR)(CString)m_cardSet.m_department);

		if (m_cardSet.m_type == "U")
			ListCtrl.SetItemText(Item, 3, (LPCTSTR)(CString)"本科生");
		else if (m_cardSet.m_type == "G")
			ListCtrl.SetItemText(Item, 3, (LPCTSTR)(CString)"研究生");
		else if (m_cardSet.m_type == "T")
			ListCtrl.SetItemText(Item, 3, (LPCTSTR)(CString)"教师");
		else if (m_cardSet.m_type == "O")
			ListCtrl.SetItemText(Item, 3, (LPCTSTR)(CString)"管理人员");

		m_cardSet.MoveNext();
	}
}


void ClibraryView::AnonymousLogin()
{
	AdministratorLogin();
	
	m_CardListCtrl.DeleteAllItems();
	// 借书卡列表控件无效
	GetDlgItem(IDC_STATIC_CARD)->EnableWindow(FALSE);
	GetDlgItem(IDC_LIST_CARD)->EnableWindow(FALSE);
}


void ClibraryView::AdministratorLogin()
{
	CMainFrame *pMainWnd = (CMainFrame *)AfxGetMainWnd();

	DWORD dwStyle, ExStyle;
	// 初始化List控件的大小
	CRect rc;
	pMainWnd->GetWindowRect(&rc);
	
	GetDlgItem(IDC_STATIC_BOOK)->SetWindowPos(NULL, 8, 6, 0, 0, SWP_NOZORDER | SWP_NOSIZE);
	GetDlgItem(IDC_STATIC_CARD)->SetWindowPos(NULL, (rc.right - rc.left) * 2 / 3 + 8, 6, 0, 0, SWP_NOZORDER | SWP_NOSIZE);

	// 设置图书列表控件
	m_BookListCtrl.SetWindowPos(NULL, 8, 22, (rc.right - rc.left) * 2 / 3 - 8, rc.bottom - rc.top - 200, SWP_NOZORDER);
	// 使List控件整栏选取:
	dwStyle = ::GetWindowLong(m_BookListCtrl.m_hWnd,GWL_STYLE);
	// 设置为报表形式
	SetWindowLong(m_BookListCtrl.m_hWnd,GWL_STYLE,dwStyle|LVS_REPORT);
	ExStyle = m_BookListCtrl.GetExtendedStyle();
	// 设置为整栏选择和网格线
	m_BookListCtrl.SetExtendedStyle(ExStyle|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
	// 设置借书卡列表控件
	m_CardListCtrl.SetWindowPos(NULL, (rc.right - rc.left) * 2 / 3 + 8, 22, (rc.right - rc.left) / 3 - 26, rc.bottom - rc.top - 200, SWP_NOZORDER);
	// 使List控件整栏选取:
	dwStyle = ::GetWindowLong(m_CardListCtrl.m_hWnd,GWL_STYLE);
	// 设置为报表形式
	SetWindowLong(m_CardListCtrl.m_hWnd,GWL_STYLE,dwStyle|LVS_REPORT);
	ExStyle = m_CardListCtrl.GetExtendedStyle();
	// 设置为整栏选择和网格线
	m_CardListCtrl.SetExtendedStyle(ExStyle|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);

	// 为图书列表控件添加栏目
	m_BookListCtrl.InsertColumn(0, _T("书号"), LVCFMT_LEFT, 60, -1);
	m_BookListCtrl.InsertColumn(1, _T("分类"), LVCFMT_LEFT, 80, -1);
	m_BookListCtrl.InsertColumn(2, _T("书名"), LVCFMT_LEFT, 150, -1);
	m_BookListCtrl.InsertColumn(3, _T("出版社"), LVCFMT_LEFT, 150, -1);
	m_BookListCtrl.InsertColumn(4, _T("出版年份"), LVCFMT_LEFT, 80, -1);
	m_BookListCtrl.InsertColumn(5, _T("作者"), LVCFMT_LEFT, 80, -1);
	m_BookListCtrl.InsertColumn(6, _T("价格"), LVCFMT_LEFT, 60, -1);
	m_BookListCtrl.InsertColumn(7, _T("总藏书量"), LVCFMT_LEFT, 80, -1);
	m_BookListCtrl.InsertColumn(8, _T("库存量"), LVCFMT_LEFT, 80, -1);

	// 为借书卡列表控件添加栏目
	m_CardListCtrl.InsertColumn(0, _T("卡号"), LVCFMT_LEFT, 80, -1);
	m_CardListCtrl.InsertColumn(1, _T("姓名"), LVCFMT_LEFT, 80, -1);
	m_CardListCtrl.InsertColumn(2, _T("单位"), LVCFMT_LEFT, 80, -1);
	m_CardListCtrl.InsertColumn(3, _T("类别"), LVCFMT_LEFT, 80, -1);

	// 查询所有图书

⌨️ 快捷键说明

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