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

📄 lllview.cpp

📁 适合MFC初学者学习
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// LLLView.cpp : implementation of the CLLLView class
//

#include "stdafx.h"
#include "LLL.h"

#include "LLLSet.h"
#include "LLLDoc.h"
#include "LLLView.h"
#include "MyLibrarySet.h"
#include "UserSet.h"

#include "EditPasswordDlg.h"//包含修改密码对话框
#include "DelUserDlg.h"//包含删除对话框
#include "LoadDlg.h"//包含登录对话框
#include "AddUser.h"//AddUser头文件包含的是AddUserDlg程序
#include "AddBook.h"//包含添加图书对话框
#include "DelBookDlg.h"//包含删除图书对话框
#include "EditBookDlg.h"//包含修改图书对话框
#include "FindBookDlg.h"//包含查询图书对话框
#include "FindDDDlg.h"//包含图书查询结果对话框
#include "FindAutherDlg.h"//包含按作者查询对话框
#include "FindUserDlg.h"//包含用户查询对话框
#include "FindUserDDDlg.h"//包含用户查询结果对话框
#include "BorrowDlg.h"//包含借书对话框
#include "BackDlg.h"//包含还书对话框
#include "ExitDlg.h"//包含退出对话框

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

/////////////////////////////////////////////////////////////////////////////
// CLLLView

IMPLEMENT_DYNCREATE(CLLLView, CRecordView)

BEGIN_MESSAGE_MAP(CLLLView, CRecordView)
	//{{AFX_MSG_MAP(CLLLView)
	ON_COMMAND(ID_LOAD, OnLoad)
	ON_COMMAND(ID_ADD_USER, OnAddUser)
	ON_COMMAND(ID_DELETE_USER, OnDeleteUser)
	ON_COMMAND(ID_EDIT_PASSWORD, OnEditPassword)
	ON_COMMAND(ID_ADD_BOOK, OnAddBook)
	ON_COMMAND(ID_DELETE_BOOK, OnDeleteBook)
	ON_COMMAND(ID_EDIT_BOOK, OnEditBook)
	ON_COMMAND(ID_FIND_BOOK, OnFindBook)
	ON_COMMAND(ID_FIND_AS_AUTHOR, OnFindAsAuthor)
	ON_COMMAND(ID_FIND_USER, OnFindUser)
	ON_COMMAND(ID_SHOW_ALL_BOOK, OnShowAllBook)
	ON_COMMAND(ID_SHOW_ALL_USER, OnShowAllUser)
	ON_COMMAND(ID_BORROW, OnBorrow)
	ON_COMMAND(ID_BACK, OnBack)
	ON_UPDATE_COMMAND_UI(ID_ADD_BOOK, OnUpdateAddBook)
	ON_UPDATE_COMMAND_UI(ID_ADD_USER, OnUpdateAddUser)
	ON_UPDATE_COMMAND_UI(ID_BACK, OnUpdateBack)
	ON_UPDATE_COMMAND_UI(ID_BORROW, OnUpdateBorrow)
	ON_UPDATE_COMMAND_UI(ID_DELETE_BOOK, OnUpdateDeleteBook)
	ON_UPDATE_COMMAND_UI(ID_DELETE_USER, OnUpdateDeleteUser)
	ON_UPDATE_COMMAND_UI(ID_EDIT_BOOK, OnUpdateEditBook)
	ON_UPDATE_COMMAND_UI(ID_EDIT_PASSWORD, OnUpdateEditPassword)
	ON_UPDATE_COMMAND_UI(ID_FIND_AS_AUTHOR, OnUpdateFindAsAuthor)
	ON_UPDATE_COMMAND_UI(ID_FIND_BOOK, OnUpdateFindBook)
	ON_UPDATE_COMMAND_UI(ID_FIND_USER, OnUpdateFindUser)
	ON_UPDATE_COMMAND_UI(ID_GO_OUT, OnUpdateGoOut)
	ON_UPDATE_COMMAND_UI(ID_SHOW_ALL_BOOK, OnUpdateShowAllBook)
	ON_UPDATE_COMMAND_UI(ID_SHOW_ALL_USER, OnUpdateShowAllUser)
	ON_COMMAND(ID_GO_OUT, OnGoOut)
	ON_COMMAND(ID_EXIT, OnExit)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CRecordView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CRecordView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CRecordView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CLLLView construction/destruction

CString book_name = "";//全局变量用来做类之间的数值传递,初始化为空
CString book_number = "";//同上
int m_loading = 0;//登录标识符,初始化为未登录

CLLLView::CLLLView()
	: CRecordView(CLLLView::IDD)
{
	//{{AFX_DATA_INIT(CLLLView)
		// NOTE: the ClassWizard will add member initialization here
	m_pSet = NULL;
	//}}AFX_DATA_INIT
	// TODO: add construction code here
	
}

CLLLView::~CLLLView()
{
}

void CLLLView::DoDataExchange(CDataExchange* pDX)
{
	CRecordView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CLLLView)
	DDX_Control(pDX, IDC_LIST_BOOK, m_bookList);
	//}}AFX_DATA_MAP
}

BOOL CLLLView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CRecordView::PreCreateWindow(cs);
}

void CLLLView::OnInitialUpdate()
{
	m_pSet = &GetDocument()->m_lLLSet;
	CRecordView::OnInitialUpdate();
	GetParentFrame()->RecalcLayout();
	ResizeParentToFit();

}

/////////////////////////////////////////////////////////////////////////////
// CLLLView printing

BOOL CLLLView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CLLLView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CLLLView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CLLLView diagnostics

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

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

CLLLDoc* CLLLView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CLLLDoc)));
	return (CLLLDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CLLLView database support
CRecordset* CLLLView::OnGetRecordset()
{
	return m_pSet;
}


/////////////////////////////////////////////////////////////////////////////
// CLLLView message handlers

//登录函数
bool CLLLView::OnLoad() 
{
	// TODO: Add your command handler code here
	CLoadDlg dlg;
	if (IDOK != dlg.DoModal())
	{
		return false;
	}
	if ((dlg.m_name == "") || (dlg.m_password == ""))
	{
		AfxMessageBox("用户名或密码不能为空!");
		return FALSE;
	}

	if (!tmp.Loading(dlg.m_name, dlg.m_password))
	{
		AfxMessageBox("用户名或密码错误!");
		return FALSE;
	}

	if (m_loading == 1)
	{
		AfxMessageBox("已有用户登录!");
		return FALSE;
	}
	//记录登录用户信息
	CUserSet User(&theApp.m_DB);
	User.Open();
	User.MoveFirst();
	for (int i=0; !(User.IsEOF()); i++)        
	{ 
	
		if ((User.m_UserName == dlg.m_name) && (User.m_PassWord == dlg.m_password))
		{
			UU.m_ID = User.m_ID;
			UU.m_UserName = User.m_UserName;
			UU.m_PassWord = User.m_PassWord;
			UU.m_Popedom = User.m_Popedom;
			UU.m_info = User.m_info;
			m_loading = 1;
			break;
		}
		else
		{
			User.MoveNext();
			continue;
		}	
	}

	AfxMessageBox("登陆成功!");
	SetFormat();
	ShowItem();
	return true;
}

//注销函数
void CLLLView::OnGoOut() 
{
	// TODO: Add your command handler code here
	m_loading = 0;
	UU.m_UserName = "";
	UU.m_PassWord = "";
	UU.m_Popedom = "";
	AfxMessageBox("已成功注销!");
	SetFormat();	
}

//退出函数
void CLLLView::OnExit() 
{
	// TODO: Add your command handler code here
	CExitDlg dlg;
	if (ID_APP_EXIT !=  dlg.DoModal())
	{
		return ;
	}
}

//添加用户函数
void CLLLView::OnAddUser() 
{
	// TODO: Add your command handler code here
	CAddUserDlg dlg;  
	if (IDOK != dlg.DoModal())
	{
		return ;
	}
	if (dlg.m_ID == "")
	{
		AfxMessageBox("用户编号不能为空!");
		return ;
	}
	if (dlg.m_name == "")
	{
		AfxMessageBox("用户名不能为空!");
		return ;
	}
	if (dlg.m_password == "")
	{
		AfxMessageBox("用户密码不能为空!");
		return ;
	}
	if (dlg.m_passwordagain !=  dlg.m_password)
	{
		AfxMessageBox("两次密码输入不一致!");
		return ;
	}
	if (dlg.m_adminoruser == 0)
	{
		dlg.m_popedom = "管理员";
	}
	else
	{
		dlg.m_popedom = "普通用户";
	}
	UINT uID = tmp.AddUser(dlg.m_name, dlg.m_password, dlg.m_popedom);

	if (uID == -1)
	{
		AfxMessageBox("增加用户失败!");
		return ;
	}
	else
	{
		SetFormat_user();
		int nItem = m_bookList.GetItemCount();
		nItem = m_bookList.InsertItem(nItem, dlg.m_name);
		m_bookList.SetItemText(nItem, 1, dlg.m_popedom);
		m_bookList.SetItemData(nItem, uID);
		ShowItem_user();
	}
	AfxMessageBox("添加用户信息成功!");		
}

//删除用户函数
void CLLLView::OnDeleteUser() 
{
	// TODO: Add your command handler code here 
	CDelUserDlg dlg;
	if (IDOK != dlg.DoModal())
	{
		AfxMessageBox("删除失败!");
		return ;
	}
	CUserSet User(&theApp.m_DB);
	User.Open();
	User.MoveFirst();
	for (int i=0; !(User.IsEOF()); i++)        // 显示用户表中信息
	{ 
	
		if ((User.m_UserName == dlg.m_name) && (User.m_PassWord == dlg.m_password))
		{
			User.Delete();
			User.Update();
 			SetFormat_user();
			ShowItem_user();
			break;
		}
		else
		{
			User.MoveNext();
			continue;
		}	
	}
	if (User.IsEOF())
	{
		AfxMessageBox("没有找到该用户!");
	}
}

//修改密码函数
void CLLLView::OnEditPassword() 
{
	// TODO: Add your command handler code here
	CEditPasswordDlg dlg;
	dlg.m_name = UU.m_UserName;
	if (IDOK != dlg.DoModal())
	{
		return ;
	}

	CUserSet User(&theApp.m_DB);
	User.Open();
	User.MoveFirst();
	for (int i=0; !(User.IsEOF()); i++)        // 显示用户表中信息
	{ 
		//查找登录用户进行密码修改
		if ((User.m_UserName == UU.m_UserName) && (User.m_PassWord == UU.m_PassWord))
		{
			dlg.m_name = User.m_UserName;
			if (User.m_PassWord != dlg.m_oldpassword)
			{
				AfxMessageBox("用户原密码错误!");
				return ;
			}
			else if (dlg.m_newpassword != dlg.m_againnew)
			{
				AfxMessageBox("两次输入新密码不一致!");
				return ;
			}
			else
			{
				User.Edit();
				User.m_PassWord = dlg.m_newpassword;
				User.Update();
				AfxMessageBox("修改成功!");
				SetFormat_user();
				ShowItem_user();
				break;//修改密码后跳出所有循环,结束操作
			}
			
		}
		else
		{
			User.MoveNext();
			continue;
		}	
	}
	if (User.IsEOF())
	{
		AfxMessageBox("没有找到该用户!");
	}
	User.Close();
}

//显示图书信息初始化
 void CLLLView::SetFormat()
{
	m_bookList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
	m_bookList.InsertColumn(0,_T("编号"),LVCFMT_LEFT,50,-1);
	m_bookList.InsertColumn(1,_T("书号"),LVCFMT_LEFT,100,-1);
	m_bookList.InsertColumn(2,_T("类型"),LVCFMT_LEFT,70,-1);
	m_bookList.InsertColumn(3,_T("书名"),LVCFMT_LEFT,110,-1);
	m_bookList.InsertColumn(4,_T("作者"),LVCFMT_LEFT,90,-1);
	m_bookList.InsertColumn(5,_T("出版社"),LVCFMT_LEFT,100,-1);
	m_bookList.InsertColumn(6,_T("是否在馆"),LVCFMT_LEFT,100,-1);
	m_bookList.InsertColumn(7,_T("借书人"),LVCFMT_LEFT,100,-1);
}

//显示图书信息
 void CLLLView::ShowItem()
{
	CMyLibrarySet book(&theApp.m_DB);
	book.Open();
	m_bookList.DeleteAllItems(); 
    // 清除列表框原有信息
	book.MoveFirst();
	int nCurItem;
	for (int i=0; !(book.IsEOF()); i++)        // 显示用户表中信息
	{   
		
		nCurItem = m_bookList.InsertItem(i, book.m_number); 
		m_bookList.SetItemText(i, 1, book.m_number);
		m_bookList.SetItemText(i, 2, book.m_type);
		m_bookList.SetItemText(i, 3, book.m_name);
		m_bookList.SetItemText(i, 4, book.m_auther);
		m_bookList.SetItemText(i, 5, book.m_editer);
		m_bookList.SetItemText(i, 6, book.m_inlibrary);
		m_bookList.SetItemText(i, 7, book.m_borrowman);
		m_bookList.SetItemText(i, 8, book.m_borrowman);
		book.MoveNext();
	}
	book.Close();
}

//显示用户信息初始化
void CLLLView::SetFormat_user()
{
	m_bookList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
	m_bookList.InsertColumn(0,_T("编号"),LVCFMT_LEFT,100,-1);
	m_bookList.InsertColumn(1,_T("姓名"),LVCFMT_LEFT,100,-1);
	m_bookList.InsertColumn(2,_T("密码"),LVCFMT_LEFT,70,-1);
	m_bookList.InsertColumn(3,_T("权限"),LVCFMT_LEFT,110,-1);
	m_bookList.InsertColumn(4,_T("借书信息"),LVCFMT_LEFT,90,-1);
	m_bookList.InsertColumn(5,_T(""),LVCFMT_LEFT,100,-1);
	m_bookList.InsertColumn(6,_T(""),LVCFMT_LEFT,50,-1);
	m_bookList.InsertColumn(7,_T(""),LVCFMT_LEFT,100,-1);
}

void CLLLView::ShowItem_user()
{
	CUserSet User(&theApp.m_DB);
	User.Open();
	m_bookList.DeleteAllItems(); 
    // 清除列表框原有信息
	User.MoveFirst();
	int nCurItem;
	for (int i=0; !(User.IsEOF()); i++)        // 显示用户表中信息
	{   
		
		nCurItem = m_bookList.InsertItem(i, User.m_UserName); 
		m_bookList.SetItemText(i, 1, User.m_UserName);
		m_bookList.SetItemText(i, 2, User.m_PassWord);
		m_bookList.SetItemText(i, 3, User.m_Popedom);
		m_bookList.SetItemText(i, 4, User.m_info);

		User.MoveNext();
	}
	User.Close();
}

//添加图书函数
void CLLLView::OnAddBook() 
{
	// TODO: Add your command handler code here
	CAddBookDlg dlg;
	if (IDOK != dlg.DoModal())
	{
		return ;
	}
	if ((dlg.m_number == "") || (dlg.m_type == "") || (dlg.m_name == "") ||
		(dlg.m_auther == "") || (dlg.m_editer == ""))
	{
		AfxMessageBox("图书信息不完全!");
		return ;
	}
	UINT uID = ttt.AddBook(dlg.m_number, dlg.m_type, dlg.m_name, 
		dlg.m_auther, dlg.m_editer);

	if (uID == -1)
	{
		AfxMessageBox("增加图书失败!");
		return ;
	}
	else
	{
		AfxMessageBox("添加图书信息成功!");
		SetFormat();
		ShowItem();
	}
	
}

//删除图书信息函数
void CLLLView::OnDeleteBook() 
{
	// TODO: Add your command handler code here
	CDelBookDlg dlg;
	if (IDOK != dlg.DoModal())
	{
		return ;
	}
	//按书名进行删除
	if (dlg.m_choice == 0)
	{
		CMyLibrarySet Book(&theApp.m_DB);
		Book.Open();
		Book.MoveFirst();
		for (int i=0; !(Book.IsEOF()); i++)        
		{ 
			
			if ((Book.m_number == dlg.m_number))
			{
				if (Book.m_inlibrary == "否")
				{
					AfxMessageBox("图书已借出,不得删除!");
					return ;
				}
				Book.Delete();
				Book.Update();
				break;
			}
			else
			{
				Book.MoveNext();
				continue;
			}	
		}
		SetFormat();
		ShowItem();
		Book.Close();
	}
	//按书号进行删除
	else
	{
		CMyLibrarySet Book(&theApp.m_DB);
		Book.Open();
		Book.MoveFirst();
		for (int i=0; !(Book.IsEOF()); i++)        
		{ 
			
			if ((Book.m_name== dlg.m_name))
			{
				Book.Delete();
				Book.Update();
				break;
			}
			else
			{
				Book.MoveNext();
				continue;
			}	
		}
		SetFormat();
		ShowItem();
	}
}

//图书编辑函数,不稳定
void CLLLView::OnEditBook() 
{
	// TODO: Add your command handler code here
// 获取用户选择
	int nSelect = m_bookList.GetNextItem( -1, LVNI_SELECTED ); 
	if( nSelect == -1 ) 
	{
		AfxMessageBox( "请选择需要修改信息的图书!" );
		return; 
	}
	CString strNo = m_bookList.GetItemText( nSelect, 0 ); 

	// 定义数据集对象
	CMyLibrarySet book_find( &theApp.m_DB );
// 设置过滤条件
	// 打开数据集对象
	book_find.Open(); 
	book_find.MoveFirst();
	for (int i=0; !(book_find.IsEOF()); i++)        
	{ 
		
		if ((book_find.m_number == strNo))
		{
			CEditBookDlg dlg;
			dlg.m_number = book_find.m_number;
			dlg.m_type = book_find.m_type;
			dlg.m_name = book_find.m_name;
			dlg.m_auther = book_find.m_auther;
			dlg.m_editer = book_find.m_editer;
			if( dlg.DoModal() == IDOK )
			{
				book_find.Edit();
				book_find.m_number = dlg.m_number; 
				book_find.m_type = dlg.m_type; 
				book_find.m_name = dlg.m_name; 
				book_find.m_auther = dlg.m_auther; 
				book_find.m_editer = dlg.m_editer; 
			}
			break;
		}
		else
		{
			book_find.MoveNext();
			continue;
		}	
	}

	book_find.Update();//数据库更新

	AfxMessageBox("图书信息修改成功!");

	SetFormat();
	ShowItem();

	book_find.Close();
}

//图书查询函数
void CLLLView::OnFindBook() 
{
	// TODO: Add your command handler code here
	CFindBookDlg dlg;
	CFindDDDlg dlg_view;
	CBorrowDlg dlg_borrow;

	if (IDOK == dlg.DoModal())
	{
		//按书名进行查询
		if (dlg.m_choice == 0)
		{
			CMyLibrarySet Book(&theApp.m_DB);
			Book.Open();
			Book.MoveFirst();
			for (int i=0; !(Book.IsEOF()); i++)        
			{ 
				
				if ((Book.m_name == dlg.m_name))
				{
					
					dlg_view.m_ID = Book.m_ID;
					dlg_view.m_number = Book.m_number;
					dlg_view.m_type = Book.m_type;
					dlg_view.m_name = Book.m_name;
					dlg_view.m_auther = Book.m_auther;
					dlg_view.m_editer = Book.m_editer;
					dlg_view.m_inlibrary = Book.m_inlibrary;

⌨️ 快捷键说明

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