www.pudn.com > PBMS.rar > BorrowDlg.cpp
// BorrowDlg.cpp : implementation file
//
#include "stdafx.h"
#include "PBMS.h"
#include "BorrowDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CBorrowDlg dialog
CBorrowDlg::CBorrowDlg(CWnd* pParent /*=NULL*/)
: CDialog(CBorrowDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CBorrowDlg)
//}}AFX_DATA_INIT
m_canEdit = true;
}
void CBorrowDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CBorrowDlg)
DDX_Control(pDX, IDC_BUTTON_BORROWAGAIN, m_btnBorrowAgain);
DDX_Control(pDX, IDC_BUTTON_REB, m_btnReborrow);
DDX_Control(pDX, IDC_BUTTON_EDIT, m_btnEdit);
DDX_Control(pDX, IDC_BUTTON_RETURN, m_btnReturn);
DDX_Control(pDX, IDC_BUTTON_DEL, m_btnDel);
DDX_Control(pDX, IDC_BUTTON_ADD, m_btnAdd);
DDX_Control(pDX, IDC_LIST_BOWLIST, m_listBorrow);
//}}AFX_DATA_MAP
}
IMPLEMENT_DYNCREATE(CBorrowDlg, CDialog)
BEGIN_MESSAGE_MAP(CBorrowDlg, CDialog)
//{{AFX_MSG_MAP(CBorrowDlg)
ON_BN_CLICKED(IDC_BUTTON_RETURN, OnButtonReturn)
ON_WM_PAINT()
ON_BN_CLICKED(IDC_BUTTON_ADD, OnButtonAdd)
ON_BN_CLICKED(IDC_BUTTON_EDIT, OnButtonEdit)
ON_BN_CLICKED(IDC_BUTTON_REB, OnButtonReb)
ON_BN_CLICKED(IDC_BUTTON_DEL, OnButtonDel)
ON_NOTIFY(NM_DBLCLK, IDC_LIST_BOWLIST, OnDblclkListBowlist)
ON_BN_CLICKED(IDC_BUTTON_BORROWAGAIN, OnButtonBorrowAgain)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CBorrowDlg message handlers
BOOL CBorrowDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//重排列控件位置
AlignControls();
//*==============修改List控件风格===================*//
DWORD dwStyle = m_listBorrow.GetStyle();
dwStyle |= LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | LVS_SHOWSELALWAYS ;
m_listBorrow.SetExtendedStyle(dwStyle);
//*=================================================*//
//设置list控件列名
SetColumnName();
//初始化list控件数据
RefreshColumnData();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
/*=========================PreTranslateMessage========================================
说明:
重载PreTranslateMessage函数是为了确保用户回车时不关闭对话框,
而使其焦点指向下一个控件
====================================================================================*/
BOOL CBorrowDlg::PreTranslateMessage(MSG* pMsg)
{
BOOL handle = FALSE;
if(pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN)
{
CWnd *pCurrent = NULL;
pCurrent = GetFocus();//指向当前获得焦点的子窗口
if (pCurrent)
{
CWnd *pNext = NULL;
pNext = GetNextDlgTabItem(pCurrent);
pNext->SetFocus();//焦点指向下一个子窗口
handle = TRUE;
}
}
return (handle ? handle : CDialog::PreTranslateMessage(pMsg));
}
/*=========================SetColumnName==============================================
说明:
为List控件设置列名
====================================================================================*/
void CBorrowDlg::SetColumnName()
{
int index = 0;
//设置列名
m_listBorrow.InsertColumn(index++,"序号",LVCFMT_LEFT);//注:这里的序号不是ID号
m_listBorrow.InsertColumn(index++,"书名",LVCFMT_LEFT);
m_listBorrow.InsertColumn(index++,"索书号",LVCFMT_LEFT);
m_listBorrow.InsertColumn(index++,"文学书",LVCFMT_LEFT);
m_listBorrow.InsertColumn(index++,"借阅日期",LVCFMT_LEFT);
m_listBorrow.InsertColumn(index++,"续借日期",LVCFMT_LEFT);
m_listBorrow.InsertColumn(index++,"应还书日期",LVCFMT_LEFT);
m_listBorrow.InsertColumn(index++,"续借次数",LVCFMT_LEFT);
m_listBorrow.InsertColumn(index++,"图书馆",LVCFMT_LEFT);
}
/*=========================SizeAllColumn==============================================
说明:
调整列的宽度
====================================================================================*/
void CBorrowDlg::SizeAllColumn()
{
CHeaderCtrl *pHeader = m_listBorrow.GetHeaderCtrl();//获取标题控件
ASSERT(pHeader);
if (pHeader)
{
m_listBorrow.SetRedraw(false);//关闭功能重画,直到全部列大小都设置好以后再整体重画,解决闪烁问题
for (int i = 0 ;i < pHeader->GetItemCount(); i++)
{
m_listBorrow.SetColumnWidth(i,LVSCW_AUTOSIZE);//首先按列中值最长的宽度设置
int temp1 = m_listBorrow.GetColumnWidth(i);
m_listBorrow.SetColumnWidth(i,LVSCW_AUTOSIZE_USEHEADER);//再按标题宽度设置
int temp2 = m_listBorrow.GetColumnWidth(i);
m_listBorrow.SetColumnWidth(i,max(temp1,temp2));
}//end-for
m_listBorrow.SetRedraw();//开启重画功能,让系统重画已经设置好的列表控件
m_listBorrow.Invalidate();//发送WM_PAINT消息
}//end-if
}
/*=========================RefreshColumnData==========================================
说明:
刷新列表控件中的数据
====================================================================================*/
bool CBorrowDlg::RefreshColumnData()
{
CString szItem;
//首先清除原来数据
m_listBorrow.DeleteAllItems();
BOOKINFO book;
int posInList = 0; //某一项在列表中的位置
//将用户所借书籍列表中数据在List控件中显示
for (int index = 0; index < m_userBooks.GetSize(); index ++)
{
book = m_userBooks.GetAt(index);
//仅显示未还的书籍信息
if (!book.IsReturn)
{
//ID
szItem.Format("%d",posInList + 1);
m_listBorrow.InsertItem(posInList,szItem);
//书名
m_listBorrow.SetItemText(posInList,1,book.name );
//书号
m_listBorrow.SetItemText(posInList,2,book.bookNumber );
//文学书
if (book.IsLiterature)
{
szItem = _T("是");
}
else
{
szItem = _T("否");
}
m_listBorrow.SetItemText(posInList,3,szItem);
//借书时间
szItem = book.borrowTime.Format("%Y-%m-%d");
m_listBorrow.SetItemText(posInList,4,szItem);
//续借时间
if (book.reborrowTime.m_status == 2)
{
//没有续借
szItem = _T("");
}
else
{
szItem = book.reborrowTime.Format("%Y-%m-%d");
}
m_listBorrow.SetItemText(posInList,5,szItem);
//应还书时间,若年为1970说明是标记无效的时间
if (book.shouldReTime.GetYear() != 1970)
{
szItem = book.shouldReTime.Format("%Y-%m-%d");
m_listBorrow.SetItemText(posInList,6,szItem);
}
//续借次数
szItem.Format("%d",book.reborrowCount);
m_listBorrow.SetItemText(posInList,7,szItem);
//图书馆
m_listBorrow.SetItemText(posInList,8,book.LibName);
//为该项绑定数据---在m_userBooks数组中的位置index
m_listBorrow.SetItemData(posInList,index);
posInList ++;
}//end-if
}//end-for
//设置列宽
SizeAllColumn();
return true;
}
/*=========================OnButtonReturn=============================================
说明:
“还书”按钮事件处理函数。将书籍属性设置为已经还,并记录下还书时间,将
书籍从本面板的list控件中删除,显示到已还面板中的list控件中
注意:
这里并没有数据库保存工作,只是修改m_userBooks中的数据,当面板关闭时才
进行数据保存工作
====================================================================================*/
void CBorrowDlg::OnButtonReturn()
{
//对用户的选择进行判断
POSITION pos = m_listBorrow.GetFirstSelectedItemPosition();
if (!pos)
{
AfxMessageBox("请选择您要还的书籍,一次可选多本。");
return;
}
//*==============设置用户还书时间===================*//
CReturnTimeDlg reDlg;
if (reDlg.DoModal() == IDCANCEL)
{
return;
}
//*=================================================*//
//*=============获取用户选择的数据项================*//
int nItem;
BOOKINFO bookinfo;
while(pos)
{
nItem = m_listBorrow.GetNextSelectedItem(pos);//nItem从0开始计算
//首先获取该书在队列中的位置
DWORD d = m_listBorrow.GetItemData(nItem);
//设置该书状态为已还
bookinfo = m_userBooks.GetAt((int)d);
bookinfo.IsReturn = true;
//设置还书时间
bookinfo.returnTime.SetDate(reDlg.m_returnTime.GetYear(),reDlg.m_returnTime.GetMonth(),reDlg.m_returnTime.GetDay());
m_userBooks.SetAt((int)d,bookinfo);
}//end-while
//*=================================================*//
//重新绘制列表数据
RefreshColumnData();
//*==============保存数据到数据库===================*//
CPBMSView *pMyView = (CPBMSView *)GetParent();
pMyView->DataExchange(2);//调用父窗口(即View窗口)函数实现数据存储
//*=================================================*//
}
void CBorrowDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
//重排列控件位置
AlignControls();
}
/*=========================AlignControls==============================================
说明:
初始化界面时或重画面板时重排列控件位置
====================================================================================*/
void CBorrowDlg::AlignControls()
{
//*=========首先调整面板自身大小(与父窗口一样)====*//
CRect rect;
this->GetParent()->GetWindowRect(&rect);
ScreenToClient(&rect);
this->MoveWindow(&rect);
//*=================================================*//
//*==============调整按钮位置=======================*//
int width= rect.Width();
int dis = width/6; //间距
CRect rButton;
m_btnReturn.GetWindowRect(&rButton);
ScreenToClient(&rButton);
int height = rButton.Height(); //按钮高度
//调整还书按钮位置
rButton.bottom = rect.bottom; //按钮底与面板底对齐
rButton.top = rect.bottom - height;
m_btnReturn.MoveWindow(&rButton); //设置新位置
//调整再借按钮位置
rButton.left += dis;
rButton.right += dis;
m_btnBorrowAgain.MoveWindow(&rButton);
//调整编辑按钮位置
rButton.left += dis;
rButton.right += dis;
m_btnEdit.MoveWindow(&rButton);
//调整添加按钮位置
rButton.left += dis;
rButton.right += dis;
m_btnAdd.MoveWindow(&rButton);
//调整续借按钮位置
rButton.left += dis;
rButton.right += dis;
m_btnReborrow.MoveWindow(&rButton);
//调整删除按钮位置
rButton.left += dis;
rButton.right += dis;
m_btnDel.MoveWindow(&rButton);
//调整按钮风格
m_btnReturn.SetFlat(FALSE);
m_btnBorrowAgain.SetFlat(FALSE);
m_btnEdit.SetFlat(FALSE);
m_btnAdd.SetFlat(FALSE);
m_btnDel.SetFlat(FALSE);
m_btnReborrow.SetFlat(FALSE);
m_btnReturn.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, 30);
m_btnReturn.SetColor(CButtonST::BTNST_COLOR_FG_IN, RGB(255,0,0));
m_btnBorrowAgain.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, 30);
m_btnBorrowAgain.SetColor(CButtonST::BTNST_COLOR_FG_IN, RGB(255,0,0));
m_btnEdit.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, 30);
m_btnEdit.SetColor(CButtonST::BTNST_COLOR_FG_IN, RGB(255,0,0));
m_btnAdd.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, 30);
m_btnAdd.SetColor(CButtonST::BTNST_COLOR_FG_IN, RGB(255,0,0));
m_btnDel.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, 30);
m_btnDel.SetColor(CButtonST::BTNST_COLOR_FG_IN, RGB(255,0,0));
m_btnReborrow.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, 30);
m_btnReborrow.SetColor(CButtonST::BTNST_COLOR_FG_IN, RGB(255,0,0));
//*=================================================*//
//*==============调整列表控件位置===================*//
//将客户区进行修整
rect.DeflateRect(10,10,10,10);
rect.bottom -= height;//减去按钮高度
m_listBorrow.MoveWindow(&rect);
//*=================================================*//
}
/*=========================DestroyWindow==============================================
说明:
重载此函数主要是在窗口关闭时保存用户修改的数据,即数据库
保存工作在这里进行
====================================================================================*/
BOOL CBorrowDlg::DestroyWindow()
{
// TODO: Add your specialized code here and/or call the base class
return CDialog::DestroyWindow();
}
/*=========================OnButtonAdd================================================
说明:
添加书籍事件处理函数
====================================================================================*/
void CBorrowDlg::OnButtonAdd()
{
CBookInfoDlg dlg;
BOOKINFO newbook;
//将图书馆信息传给对话框
dlg.m_libsInfo.Copy(m_libsInfo);
//显示图书信息对话框
if (dlg.DoModal() == IDOK)
{
//将新添书籍信息读取
newbook = dlg.m_curBookInfo;
//设置用户ID
newbook.UserID = m_curUserID;
//假期时间及允许借书时间
for (int i = 0; i < m_libsInfo.GetSize(); i++)
{
if (newbook.LibID == m_libsInfo.GetAt(i).id)
{
newbook.HasHoliday = m_libsInfo.GetAt(i).HasHoliday;
newbook.holiday_begin = m_libsInfo.GetAt(i).holiday_begin;
newbook.holiday_end = m_libsInfo.GetAt(i).holiday_end;
newbook.canborrowTime = m_libsInfo.GetAt(i).canborrowTime;
newbook.canreborrowTime = m_libsInfo.GetAt(i).canreborrowTime;
break;
}
}//end-for
//设置还书时间
GetReturnTime(&newbook);
//设置本书未还
newbook.IsReturn = false;
//续借时间设置
newbook.reborrowTime.SetStatus(COleDateTime::null);
//还书时间设置
newbook.returnTime.SetStatus(COleDateTime::null);
//添加到队列中
m_userBooks.Add(newbook);
//重新显示列表
RefreshColumnData();
//*==============保存数据到数据库===================*//
CPBMSView *pMyView = (CPBMSView *)GetParent();
pMyView->DataExchange(2);//调用父窗口(即View窗口)函数实现数据存储
//*=================================================*//
}//end-if(DoModal)
}
/*=========================GetReturnTime==============================================
说明:
获取还书时间,日后图书馆制度变更后,程序修改只需在此模块进行
参数:
pBI:书籍的所有信息,返回值也在其中的shouldReTime字段中
====================================================================================*/
void CBorrowDlg::GetReturnTime(PBOOKINFO pBI)
{
//中间变量
CTime t_borrow,t_reborrow;
t_borrow = CTime(pBI->borrowTime.GetYear(),pBI->borrowTime.GetMonth(),pBI->borrowTime.GetDay(),0,0,0);
//
if (pBI->reborrowCount == 0)//没有续借过
{
//如果没有时间则无法计算还书时间
if (pBI->borrowTime.m_status == 2)
{
pBI->shouldReTime = CTime(1970,12,30,0,0,0);
return;
}
CTimeSpan t_span;
if (pBI->IsLiterature) {
t_span = CTimeSpan(30, 0, 0, 0); // 文学书只借30天
}else{
t_span = CTimeSpan(30 * pBI->canborrowTime,0,0,0);
}
pBI->shouldReTime = t_borrow + t_span;
}
else //续借过
{
t_reborrow = CTime(pBI->reborrowTime.GetYear(),pBI->reborrowTime.GetMonth(),pBI->reborrowTime.GetDay(),0,0,0);
//如果没有时间则无法计算还书时间
if (pBI->reborrowTime.m_status == 2)
{
pBI->shouldReTime = CTime(1970,12,30,0,0,0);
return;
}
//CTimeSpan t_span = CTimeSpan(30 * pBI->canreborrowTime,0,0,0);
//2005-9-25
CTimeSpan t_span;
if (pBI->IsLiterature) {
t_span = CTimeSpan(30, 0, 0, 0); // 文学书只借30天
}else{
t_span = CTimeSpan(30 * pBI->canreborrowTime,0,0,0);
}
pBI->shouldReTime = t_reborrow + t_span;
}
//*==============还书时间在假期中的处理=============*//
if (pBI->HasHoliday)//图书馆有假期
{
CTime h_begin,h_end;
h_begin = CTime(pBI->holiday_begin.GetYear(),pBI->holiday_begin.GetMonth(),pBI->holiday_begin.GetDay(),0,0,0);
h_end = CTime(pBI->holiday_end.GetYear(),pBI->holiday_end.GetMonth(),pBI->holiday_end.GetDay(),0,0,0);
//如果还书时间在假期中
if (pBI->shouldReTime > h_begin && pBI->shouldReTime < h_end )
{
CTimeSpan t_span;
t_span = pBI->shouldReTime - h_begin;
pBI->shouldReTime = h_end + t_span;
}//end-if(在假期)
}//end-if(图书馆有假期)
//*=================================================*//
}
/*=========================OnButtonEdit===============================================
说明:
编辑事件处理函数
====================================================================================*/
void CBorrowDlg::OnButtonEdit()
{
//对用户的选择进行判断
POSITION pos = m_listBorrow.GetFirstSelectedItemPosition();
if (!pos)
{
AfxMessageBox("请选择您要编辑的书籍,每次只可编辑一本。");
return;
}
//*==============获取当前选择的书籍信息=============*//
//获取该书在队列中的位置
int nItem = m_listBorrow.GetNextSelectedItem(pos);//nItem从0开始计算
DWORD d = m_listBorrow.GetItemData(nItem);
//获取信息
BOOKINFO willEditbook = m_userBooks.GetAt((int)d);
//*=================================================*//
//*==============显示对话框,进行编辑===============*//
CBookInfoDlg dlg;
//将图书馆信息传给对话框
dlg.m_libsInfo.Copy(m_libsInfo);
//将要编辑的图书信息传入对话框对象
dlg.m_curBookInfo = willEditbook;
//显示图书信息对话框
if (dlg.DoModal() == IDOK)
{
//若用户修改了借书时间或是续借时间,则重新计算还书时间
if (dlg.m_curBookInfo.borrowTime != willEditbook.borrowTime && dlg.m_curBookInfo.reborrowTime != willEditbook.reborrowTime )
{
GetReturnTime(&dlg.m_curBookInfo);
}
m_userBooks.SetAt((int)d,dlg.m_curBookInfo);
//重新显示列表
RefreshColumnData();
//*==============保存数据到数据库===================*//
CPBMSView *pMyView = (CPBMSView *)GetParent();
pMyView->DataExchange(2);//调用父窗口(即View窗口)函数实现数据存储
//*=================================================*//
}//end-if(DoModal)
//*=================================================*//
}
void CBorrowDlg::OnButtonReb()
{
//对用户的选择进行判断
POSITION pos = m_listBorrow.GetFirstSelectedItemPosition();
if (!pos)
{
AfxMessageBox("请选择您要续借的书籍,一次可选多本。");
return;
}
//*==============设置用户续借时间===================*//
CReturnTimeDlg rebDlg;
if (rebDlg.DoModal() == IDCANCEL)
{
return;
}
//*=================================================*//
//*=============获取用户选择的数据项================*//
int nItem;
BOOKINFO bookinfo;
while(pos)
{
nItem = m_listBorrow.GetNextSelectedItem(pos);//nItem从0开始计算
//首先获取该书在队列中的位置
DWORD d = m_listBorrow.GetItemData(nItem);
//设置该书状态为已还
bookinfo = m_userBooks.GetAt((int)d);
//设置续借时间
bookinfo.reborrowTime.SetDate(rebDlg.m_returnTime.GetYear(),rebDlg.m_returnTime.GetMonth(),rebDlg.m_returnTime.GetDay());
//设置还书时间
GetReturnTime(&bookinfo);
//续借次数修改
bookinfo.reborrowCount ++;
m_userBooks.SetAt((int)d,bookinfo);
}//end-while
//*=================================================*//
//重新绘制列表数据
RefreshColumnData();
//*==============保存数据到数据库===================*//
CPBMSView *pMyView = (CPBMSView *)GetParent();
pMyView->DataExchange(2);//调用父窗口(即View窗口)函数实现数据存储
//*=================================================*//
}
void CBorrowDlg::OnButtonDel()
{
//对用户的选择进行判断
POSITION pos = m_listBorrow.GetFirstSelectedItemPosition();
if (!pos)
{
AfxMessageBox("请选择您要删除的书籍,一次可选多本。");
return;
}
//首先提出删除警告
if (AfxMessageBox("继续操作将永久删除所选书籍信息!是否要继续?",MB_YESNO) == IDNO)
{
return;
}
//*=============获取用户选择的数据项================*//
CArray temp_books;
int nItem;
BOOKINFO bookinfo;
temp_books.Append(m_userBooks);
m_userBooks.RemoveAll(); //将其清空
while(pos)
{
nItem = m_listBorrow.GetNextSelectedItem(pos);//nItem从0开始计算
//首先获取该书在队列中的位置
DWORD d = m_listBorrow.GetItemData(nItem);
bookinfo = temp_books.GetAt((int)d);
bookinfo.Id = 0;//设置标记
temp_books.SetAt((int)d,bookinfo);
}//end-while
//将被设置标记的书籍删除
for (int i = 0; i < temp_books.GetSize(); i ++)
{
if (temp_books.GetAt(i).Id != 0)
{
m_userBooks.Add(temp_books.GetAt(i));
}
}
//*=================================================*//
//重新绘制列表数据
RefreshColumnData();
//*==============保存数据到数据库===================*//
CPBMSView *pMyView = (CPBMSView *)GetParent();
pMyView->DataExchange(2);//调用父窗口(即View窗口)函数实现数据存储
//*=================================================*//
}
//将双击默认功能设为编辑
void CBorrowDlg::OnDblclkListBowlist(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
if (m_canEdit)
{
OnButtonEdit();
}
*pResult = 0;
}
/*=========================MyEnableCtrl===============================================
说明:
使按钮能用与不能用。
====================================================================================*/
void CBorrowDlg::MyEnableCtrl(BOOL enable)
{
m_btnAdd.EnableWindow(enable);
m_btnBorrowAgain.EnableWindow(enable);
m_btnDel.EnableWindow(enable);
m_btnEdit.EnableWindow(enable);
m_btnReborrow.EnableWindow(enable);
m_btnReturn.EnableWindow(enable);
if (enable)
{
m_canEdit = true;
}
else
{
m_canEdit = false;
}
}
/*****************************************************************************
与续借不同,相当于重新借书,规则同“借书”,而非“续借”。
*****************************************************************************/
void CBorrowDlg::OnButtonBorrowAgain()
{
//对用户的选择进行判断
POSITION pos = m_listBorrow.GetFirstSelectedItemPosition();
if (!pos)
{
AfxMessageBox("请选择您要续借的书籍,一次可选多本。");
return;
}
//*==============设置用户续借时间===================*//
CReturnTimeDlg rebDlg;
if (rebDlg.DoModal() == IDCANCEL)
{
return;
}
//*=================================================*//
//*=============获取用户选择的数据项================*//
int nItem;
BOOKINFO bookinfo;
while(pos)
{
nItem = m_listBorrow.GetNextSelectedItem(pos);//nItem从0开始计算
//首先获取该书在队列中的位置
DWORD d = m_listBorrow.GetItemData(nItem);
bookinfo = m_userBooks.GetAt((int)d);
//设置借书时间
bookinfo.borrowTime.SetDate(rebDlg.m_returnTime.GetYear(),rebDlg.m_returnTime.GetMonth(),rebDlg.m_returnTime.GetDay());
//续借次数设置为0,续借时间设置为空
bookinfo.reborrowCount = 0;
bookinfo.reborrowTime.SetStatus(COleDateTime::null);
//设置还书时间
GetReturnTime(&bookinfo);
m_userBooks.SetAt((int)d,bookinfo);
}//end-while
//*=================================================*//
//重新绘制列表数据
RefreshColumnData();
//*==============保存数据到数据库===================*//
CPBMSView *pMyView = (CPBMSView *)GetParent();
pMyView->DataExchange(2);//调用父窗口(即View窗口)函数实现数据存储
//*=================================================*//
}