📄 lllview.cpp
字号:
// 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 + -