📄 bookdlg.cpp
字号:
// BookDlg.cpp : implementation file
//
#include "stdafx.h"
#include "library.h"
#include "BookDlg.h"
#include "BookFind.h"
#include "BookAdd.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CBookDlg dialog
CBookDlg::CBookDlg(CWnd* pParent /*=NULL*/)
: CDialog(CBookDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CBookDlg)
m_Author = _T("");
m_Borrowed = FALSE;
m_Press = _T("");
m_Price = _T("");
m_BookID = _T("");
m_PublishDate = COleDateTime::GetCurrentTime();
m_BookName = _T("");
//}}AFX_DATA_INIT
}
void CBookDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CBookDlg)
DDX_Control(pDX, IDC_BOOK_VIEW, m_BookView);
DDX_Text(pDX, IDC_AUTHOR, m_Author);
DDX_Check(pDX, IDC_BORROWED, m_Borrowed);
DDX_Text(pDX, IDC_PRESS, m_Press);
DDX_Text(pDX, IDC_PRICE, m_Price);
DDX_Text(pDX, IDC_BOOKID, m_BookID);
DDX_DateTimeCtrl(pDX, IDC_PUBLISH_DATE, m_PublishDate);
DDX_Text(pDX, IDC_BOOK_NAME, m_BookName);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CBookDlg, CDialog)
//{{AFX_MSG_MAP(CBookDlg)
ON_NOTIFY(NM_CLICK, IDC_BOOK_VIEW, OnClickBookView)
ON_BN_CLICKED(IDC_RECORD_ADD, OnRecordAdd)
ON_BN_CLICKED(IDC_RECORD_DEL, OnRecordDel)
ON_BN_CLICKED(IDC_RECORD_EDIT, OnRecordEdit)
ON_BN_CLICKED(IDC_BOOK_FIND, OnBookFind)
ON_BN_CLICKED(IDC_REFRESH, OnRefresh)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CBookDlg message handlers
BOOL CBookDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
//完成数据的显示
TextShow();
InitListView();
ListShow();
UpdateData(false);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CBookDlg::ListShow()
{
//在列表中显示图书的信息
int i=0;
COleDateTime publishTime;
CString borrowed;
CString strTime;
CString bookPrice;
if(!m_BookSet.IsOpen())
{
m_BookSet.m_strSort="bookid";
m_BookSet.Open();
m_BookSet.MoveFirst();
}
m_BookView.DeleteAllItems();
while(!m_BookSet.IsEOF())
{
m_BookView.InsertItem(i,m_BookSet.m_bookid);
m_BookView.SetItemText(i,1,m_BookSet.m_bookname);
m_BookView.SetItemText(i,2,m_BookSet.m_author);
bookPrice=m_BookSet.m_price;
strLength=bookPrice.GetLength();
//使价格只保留两位小数
bookPrice=bookPrice.Left(strLength-2);
m_BookView.SetItemText(i,3,bookPrice);
nYear=m_BookSet.m_publishtime.GetYear();
nMonth=m_BookSet.m_publishtime.GetMonth();
nDay=m_BookSet.m_publishtime.GetDay();
publishTime.SetDate(nYear,nMonth,nDay);
strTime=publishTime.Format(VAR_DATEVALUEONLY);
m_BookView.SetItemText(i,4,strTime);
m_BookView.SetItemText(i,5,m_BookSet.m_press);
if(m_BookSet.m_borrowed)
borrowed="是";
else
borrowed="否";
m_BookView.SetItemText(i,6,borrowed);
m_BookSet.MoveNext();
i++;
}
if(m_BookView.GetItemCount()!=0)
m_BookView.SetHotItem(0);
m_BookSet.Close();
}
void CBookDlg::OnClickBookView(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
//当鼠标单击列表中的记录时,在基本数据区中显示相应数据
POSITION pos;
pos=m_BookView.GetFirstSelectedItemPosition();
if(pos!=NULL)
{
int nItem=m_BookView.GetNextSelectedItem(pos);
m_BookID=m_BookView.GetItemText(nItem,0);
m_BookSet.m_strFilter="bookid='"+m_BookID+"'";
m_BookSet.Open();
TextShow();
m_BookSet.Close();
m_BookView.SetHotItem(nItem);
UpdateData(false);
}
*pResult = 0;
}
void CBookDlg::TextShow()
{
//显示基本数据
if(!m_BookSet.IsOpen())
{
m_BookSet.Open();
m_BookSet.MoveFirst();
}
m_BookID=m_BookSet.m_bookid;
m_BookName=m_BookSet.m_bookname;
m_Author=m_BookSet.m_author;
m_Price=m_BookSet.m_price;
strLength=m_Price.GetLength();
m_Price=m_Price.Left(strLength-2);
m_Press=m_BookSet.m_press;
nYear=m_BookSet.m_publishtime.GetYear();
nMonth=m_BookSet.m_publishtime.GetMonth();
nDay=m_BookSet.m_publishtime.GetDay();
m_PublishDate.SetDate(nYear,nMonth,nDay);
m_Borrowed=m_BookSet.m_borrowed;
m_BookSet.Close();
}
void CBookDlg::InitListView()
{
//初始化浏览列表
m_BookView.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_BookView.InsertColumn(0,"书号");
m_BookView.InsertColumn(1,"书名");
m_BookView.InsertColumn(2,"作者");
m_BookView.InsertColumn(3,"价格");
m_BookView.InsertColumn(4,"出版日期");
m_BookView.InsertColumn(5,"出版社");
m_BookView.InsertColumn(6,"借出");
m_BookView.SetColumnWidth(0,80);
m_BookView.SetColumnWidth(1,150);
m_BookView.SetColumnWidth(2,100);
m_BookView.SetColumnWidth(3,80);
m_BookView.SetColumnWidth(4,100);
m_BookView.SetColumnWidth(5,150);
m_BookView.SetColumnWidth(6,50);
}
void CBookDlg::OnRecordAdd()
{
// TODO: Add your control notification handler code here
//添加新纪录
CBookAdd m_BookAdd;
m_BookAdd.DoModal();
}
void CBookDlg::OnRecordDel()
{
// TODO: Add your control notification handler code here
//删除所选择的纪录
if(AfxMessageBox("您确定要删除此纪录吗?",MB_OKCANCEL)==IDCANCEL)
return;
UpdateData();
m_BookSet.Open();
m_BookSet.m_strFilter="bookid='"+m_BookID+"'";
m_BookSet.Requery();
m_BookSet.Delete();
m_BookSet.Close();
m_BookSet.Open();
m_BookSet.m_strFilter="";
m_BookSet.Requery();
m_BookSet.MoveFirst();
ListShow();
TextShow();
UpdateData(false);
}
void CBookDlg::OnRecordEdit()
{
// TODO: Add your control notification handler code here
//对数据纪录进行修改操作
//先找到所要修改的纪录,然后再进行数据的更新
m_BookSet.Open();
m_BookSet.m_strFilter="bookid='"+m_BookID+"'";
m_BookSet.Requery();
UpdateData();
//保存数据到数据库
m_BookSet.Edit();
m_BookSet.m_bookid=m_BookID;
m_BookSet.m_bookname=m_BookName;
m_BookSet.m_author=m_Author;
m_BookSet.m_price=m_Price;
nYear=m_PublishDate.GetYear();
nMonth=m_PublishDate.GetMonth();
nDay=m_PublishDate.GetDay();
CTime PublishTime(nYear,nMonth,nDay,0,0,0);
m_BookSet.m_publishtime=PublishTime;
m_BookSet.m_press=m_Press;
m_BookSet.m_borrowed=m_Borrowed;
m_BookSet.Update();
m_BookSet.m_strFilter="";
m_BookSet.Requery();
m_BookSet.Close();
int nItem=m_BookView.GetSelectionMark();
ListShow();
//把纪录重新定位到所修改的纪录上
m_BookView.SetSelectionMark(nItem);
m_BookView.SetHotItem(nItem);
m_BookSet.Open();
m_BookSet.Move(nItem);
TextShow();
UpdateData(false);
}
void CBookDlg::OnBookFind()
{
// TODO: Add your control notification handler code here
//完成图书的查询
CBookFind m_BookFind;
CString strSql;
if(m_BookFind.DoModal()!=IDOK)
return;
switch(m_BookFind.m_Selection)
{
case 0:
//按书号查询
m_BookSet.Open();
m_BookSet.m_strFilter="bookid"+m_BookFind.m_Condition+"'"+m_BookFind.m_BookID+"'";
m_BookSet.Requery();
if(m_BookSet.GetRecordCount()==0)
{
AfxMessageBox("没有找到您所要查询的书籍!");
m_BookSet.Close();
}
else
{
ListShow();
TextShow();
}
break;
case 1:
//按书名查询
strSql.Format("select * from book where bookname like '%%%s%%'",m_BookFind.m_BookName);
m_BookSet.Open(AFX_DB_USE_DEFAULT_TYPE,strSql);
if(m_BookSet.GetRecordCount()==0)
{
AfxMessageBox("没有找到您所要查询的书籍!");
m_BookSet.Close();
}
else
{
ListShow();
TextShow();
}
break;
case 2:
//按作者查询
m_BookSet.Open();
m_BookSet.m_strFilter="author='"+m_BookFind.m_Author+"'";
m_BookSet.Requery();
if(m_BookSet.GetRecordCount()==0)
{
AfxMessageBox("没有找到您所要查询的书籍!");
m_BookSet.Close();
}
else
{
ListShow();
TextShow();
}
break;
case 3:
//按出版社查询
m_BookSet.Open();
m_BookSet.m_strFilter="press='"+m_BookFind.m_Press+"'";
m_BookSet.Requery();
if(m_BookSet.GetRecordCount()==0)
{
AfxMessageBox("没有找到您所要查询的书籍!");
m_BookSet.Close();
}
else
{
ListShow();
TextShow();
}
break;
case 4:
//按出版日期查询
nYear=m_BookFind.m_PublishTime.GetYear();
nMonth=m_BookFind.m_PublishTime.GetMonth();
nDay=m_BookFind.m_PublishTime.GetDay();
CTime m_Time(nYear,nMonth,nDay);
strSql.Format("select * from book where publishtime=m_Time");
m_BookSet.Open(AFX_DB_USE_DEFAULT_TYPE,strSql);
if(m_BookSet.GetRecordCount()==0)
{
AfxMessageBox("没有找到您所要查询的书籍!");
m_BookSet.Close();
}
else
{
ListShow();
TextShow();
}
break;
} //end switch
UpdateData(false);
m_BookSet.Open();
m_BookSet.m_strFilter="";
m_BookSet.Requery();
m_BookSet.Close();
}
void CBookDlg::OnRefresh()
{
// TODO: Add your control notification handler code here
//刷新基本数据区和列表中的数据
m_BookSet.Open();
m_BookSet.m_strFilter="";
m_BookSet.Requery();
ListShow();
TextShow();
UpdateData(false);
}
void CBookDlg::TextClear()
{
//清空基本数据区的数据
COleDateTime publishTime;
m_BookID.Empty();
m_BookName.Empty();
m_Author.Empty();
m_Price.Empty();
publishTime=COleDateTime::GetCurrentTime();
nYear=publishTime.GetYear();
nMonth=publishTime.GetMonth();
nDay=publishTime.GetDay();
m_PublishDate.SetDate(nYear,nMonth,nDay);
m_Press.Empty();
m_Borrowed=false;
UpdateData(false);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -