📄 readerdlg.cpp
字号:
// ReaderDlg.cpp : implementation file
//
#include "stdafx.h"
#include "Lib_Sys.h"
#include "ReaderDlg.h"
#include "ReaderSet.h"
#include "Lib_SysSet.h"
#include "LoadSet.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CReaderDlg dialog
int m_Which=0;
int m_Total;
CReaderDlg::CReaderDlg(CWnd* pParent /*=NULL*/)
: CDialog(CReaderDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CReaderDlg)
m_Edit1 = _T("");
m_Edit12 = _T("");
m_Edit13 = _T("");
m_Edit14 = _T("");
m_Edit15 = _T("");
m_Edit17 = _T("");
m_Edit18 = _T("");
m_Edit19 = _T("");
m_Edit2 = _T("");
m_Edit22 = _T("");
m_Edit3 = _T("");
m_Edit4 = _T("");
m_Edit5 = _T("");
m_Edit6 = _T("");
m_Edit7 = _T("");
m_Edit10 = 0;
m_Edit11 = 0;
m_Edit8 = _T("");
m_Edit20 = 0;
m_Edit21 = 0;
m_Edit23 = _T("");
m_Edit24 = _T("");
m_Edit25 = _T("");
//}}AFX_DATA_INIT
}
void CReaderDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CReaderDlg)
DDX_Text(pDX, IDC_EDIT1, m_Edit1);
DDX_Text(pDX, IDC_EDIT12, m_Edit12);
DDX_Text(pDX, IDC_EDIT13, m_Edit13);
DDX_Text(pDX, IDC_EDIT14, m_Edit14);
DDX_Text(pDX, IDC_EDIT15, m_Edit15);
DDX_Text(pDX, IDC_EDIT17, m_Edit17);
DDX_Text(pDX, IDC_EDIT18, m_Edit18);
DDX_Text(pDX, IDC_EDIT19, m_Edit19);
DDX_Text(pDX, IDC_EDIT2, m_Edit2);
DDX_Text(pDX, IDC_EDIT22, m_Edit22);
DDX_Text(pDX, IDC_EDIT3, m_Edit3);
DDX_Text(pDX, IDC_EDIT4, m_Edit4);
DDX_Text(pDX, IDC_EDIT5, m_Edit5);
DDX_Text(pDX, IDC_EDIT6, m_Edit6);
DDX_Text(pDX, IDC_EDIT7, m_Edit7);
DDX_Text(pDX, IDC_EDIT10, m_Edit10);
DDX_Text(pDX, IDC_EDIT11, m_Edit11);
DDX_Text(pDX, IDC_EDIT8, m_Edit8);
DDX_Text(pDX, IDC_EDIT20, m_Edit20);
DDX_Text(pDX, IDC_EDIT21, m_Edit21);
DDX_Text(pDX, IDC_EDIT23, m_Edit23);
DDX_Text(pDX, IDC_EDIT24, m_Edit24);
DDX_Control(pDX, IDC_MSFLEXGRID1, m_msf);
DDX_Text(pDX, IDC_EDIT25, m_Edit25);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CReaderDlg, CDialog)
//{{AFX_MSG_MAP(CReaderDlg)
ON_EN_CHANGE(IDC_EDIT1, OnChangeEdit1)
ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
ON_EN_SETFOCUS(IDC_EDIT1, OnSetfocusEdit1)
ON_EN_KILLFOCUS(IDC_EDIT1, OnKillfocusEdit1)
ON_BN_CLICKED(IDC_BUTTON9, OnButton9)
ON_BN_CLICKED(IDC_BUTTON10, OnButton10)
ON_EN_SETFOCUS(IDC_EDIT13, OnSetfocusEdit13)
ON_EN_KILLFOCUS(IDC_EDIT13, OnKillfocusEdit13)
ON_BN_CLICKED(IDC_LOAD, OnLoad)
ON_EN_CHANGE(IDC_EDIT13, OnChangeEdit13)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CReaderDlg message handlers
void CReaderDlg::OnChangeEdit1()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
m_Which=FullEdit_1;
// MessageBox("change");
}
BOOL CReaderDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if((pMsg->message ==WM_KEYDOWN)&&(pMsg->wParam==13))
{
switch(m_Which)
{
case Init: MessageBox("请先输入读者姓名!");
break;
case FullEdit_1:CReaderDlg::OnButton2();
break;
case FullEdit_2: CReaderDlg::OnButton9();
break;
case BZero:MessageBox("本书库存为零,\n无法外借!");
break;
case BFull:MessageBox("该读者图书已借满\n不能借书!");
break;
case RNoFound:MessageBox("请重新输入姓名!");
break;
case OK:OnLoad();
}
return true;
}
return CDialog::PreTranslateMessage(pMsg);
}
void CReaderDlg::OnButton2()
{
// TODO: Add your control notification handler code here
UpdateData();
if(m_Edit1!="")
{
CReaderSet m_Reader;
m_Reader.m_strFilter="编号='"+m_Edit1+"'";
m_Reader.Open();
if(!m_Reader.IsEOF())
{
m_Edit2=m_Reader.m_column2;
m_Edit3=m_Reader.m_column3;
m_Edit4=m_Reader.m_column8;
m_Edit5=m_Reader.m_column4;
m_Edit6=m_Reader.m_column7;
m_Edit7=m_Reader.m_column5;
m_Edit10=m_Reader.m_column10;
m_Edit11=m_Reader.m_column11;
m_Edit12=m_Reader.m_column12;
m_Edit25=m_Reader.m_column6;
CTime m_Time;
m_Time.operator =(m_Reader.m_column13);
int y,m,d;
y=m_Time.GetYear();
m=m_Time.GetMonth();
d=m_Time.GetDay();
CString str;
str.Format("%d-%d-%d",y,m,d);
m_Edit8=str;
CLoadSet m_Load;
m_Load.m_strFilter="借书者编号='"+m_Edit1+"' AND 在馆='否'";
m_Load.Open();
m_Total=0;
if(!m_Load.IsEOF())
{
m_Load.MoveFirst();
while(!m_Load.IsEOF())
{
m_Load.MoveNext();
m_Total=m_Load.GetRecordCount();
}
// CString s;
// s.Format("%d",m_Total);
// MessageBox(s);
m_Load.MoveFirst();
if(m_Total<9)
{
m_msf.SetRows(1);
m_msf.SetRows(9);
}
else m_msf.SetRows(m_Total+1);
int iRow=1;
while(! m_Load.IsEOF())
{
str.Format("图书%d",iRow);
m_msf.SetRow(iRow);
m_msf.SetCol(0);
m_msf.SetText(str);
m_msf.SetCol(1);
m_msf.SetText(m_Load.m_column1);
m_msf.SetCol(2);
m_msf.SetText(m_Load.m_column2);
m_msf.SetCol(3);
m_msf.SetText(m_Load.m_column12);
m_msf.SetCol(4);
m_msf.SetText(m_Load.m_column4);
m_Time.operator =(m_Load.m_column5);
y=m_Time.GetYear();
m=m_Time.GetMonth();
d=m_Time.GetDay();
str.Format("%d-%d-%d",y,m,d);
m_msf.SetCol(5);
m_msf.SetText(str);
m_msf.SetCol(6);
m_Time.operator =(m_Load.m_column7);
y=m_Time.GetYear();
m=m_Time.GetMonth();
d=m_Time.GetDay();
str.Format("%d-%d-%d",y,m,d);
m_msf.SetText(str);
CTime m_Now;
m_Now=m_Now.GetCurrentTime();
CTimeSpan m_Range;
m_Range=m_Now-m_Load.m_column7;
int h;
h=m_Range.GetTotalHours()/24;
if (h>0) str.Format("%d",h);
else str="未过期";
m_msf.SetCol(7);
m_msf.SetText(str);
iRow++;
m_Load.MoveNext();
}
m_Load.Close();
}
else
{
m_msf.SetRows(1);
m_msf.SetRows(9);
}
UpdateData(FALSE);
if((m_Reader.m_column10-m_Reader.m_column11)<=0)
{
MessageBox("该读者图书已借满\n不能借书!");
m_Which=BFull;//图书已借满
}
}
else
{
MessageBox("没有这个名字哦!");
m_Which=RNoFound;//m_Which==RNoFound 表示没有这个姓名
}
m_Reader.Close();
}
else MessageBox("\t请先输入姓名G!\t");
}
void CReaderDlg::OnSetfocusEdit1()
{
// TODO: Add your control notification handler code here
// if(m_Which!=BFull)
}
void CReaderDlg::OnKillfocusEdit1()
{
// TODO: Add your control notification handler code here
UpdateData();
if((m_Edit1!="")&&(m_Which!=RNoFound))//m_Which==RNoFound 表示没有这个姓名
{
if(m_Which!=BFull) m_Which=RFound;
}
else m_Which=Init;
}
void CReaderDlg::OnButton9()
{
// TODO: Add your control notification handler code here
UpdateData();
if(m_Edit13!="")
{
CLib_SysSet m_Book;
m_Book.m_strFilter="图书编号='"+m_Edit13+"'";
m_Book.Open();
if(!m_Book.IsEOF())
{
m_Edit14=m_Book.m_column3;
m_Edit15=m_Book.m_column4;
m_Edit17=m_Book.m_column5;
m_Edit18=m_Book.m_column8;
m_Edit19=m_Book.m_column13;
m_Edit20=m_Book.m_column11;
m_Edit21=m_Book.m_column9;
m_Edit22=m_Book.m_column10;
UpdateData(FALSE);
if(m_Book.m_column9==0)
{
MessageBox("本书库存为零,\n无法外借!");
m_Which=BZero;//库存为零
}
else
{
m_Which=OK;
}
}
else MessageBox("查无此书!");
}
else MessageBox("请先输入姓名!");
}
void CReaderDlg::OnButton10()
{
// TODO: Add your control notification handler code here
}
void CReaderDlg::OnSetfocusEdit13()
{
// TODO: Add your control notification handler code here
if(m_Which==RFound)
m_Which=FullEdit_2;
}
void CReaderDlg::OnKillfocusEdit13()
{
// TODO: Add your control notification handler code here
if(m_Which==RFound)
m_Which=FullEdit_2;
// else MessageBox("请先输入读者姓名!");
}
BOOL CReaderDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
COleDateTime m_time,time3(0,0,1,0,0,0), time4(0,0,16,0,0,0);
COleDateTimeSpan diff;
diff=time4-time3;
m_time=m_time.GetCurrentTime();
int y,m,d;
y=m_time.GetYear();
m=m_time.GetMonth();
d=m_time.GetDay();
CString str;
str.Format("%d-%d-%d",y,m,d);
m_Edit23=str;
m_msf.SetCols(8);
m_msf.SetRows(9);
m_msf.SetColWidth(0,720);
m_msf.SetRow(0);
m_msf.SetCol(1);
m_msf.SetText("图书编号");
m_msf.SetColWidth(1,1000);
m_msf.SetCol(2);
m_msf.SetText("书名");
m_msf.SetColWidth(2,1800);
m_msf.SetCol(3);
m_msf.SetText("类别");
m_msf.SetColWidth(3,1000);
m_msf.SetCol(4);
m_msf.SetText("读者姓名");
m_msf.SetColWidth(4,1440);
m_msf.SetCol(5);
m_msf.SetText("借书时间");
m_msf.SetColWidth(5,1440);
m_msf.SetCol(6);
m_msf.SetText("应还时间");
m_msf.SetColWidth(6,1440);
m_msf.SetCol(7);
m_msf.SetText("超期天数");
m_msf.SetColWidth(7,1000);
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CReaderDlg::OnLoad()
{
// TODO: Add your control notification handler code here
CReaderSet m_Reader;
CLoadSet m_Load;
CLib_SysSet m_Book;
m_Book.m_strFilter="图书编号='"+m_Edit13+"'";
m_Book.Open();
m_Book.Edit();
m_Book.m_column9-=1;
m_Book.m_column14+=1;
m_Book.Update();
m_Book.Requery();
m_Book.Close();
MessageBox("m_Book.Close();");///////////////////////////////////////////////////////////
m_Reader.m_strFilter="编号='"+m_Edit1+"'";
m_Reader.Open();
m_Reader.Edit();
m_Reader.m_column11+=1;
m_Reader.m_column12+=1;
m_Reader.Update();
m_Reader.Requery();
m_Reader.Close();
MessageBox("m_Reader.Close();");///////////////////////////////////////////////////////////
m_Load.Open();
m_Load.AddNew();
m_Load.m_column1=m_Edit13;
m_Load.m_column2=m_Edit14;
m_Load.m_column3=m_Edit1;
m_Load.m_column4=m_Edit2;
m_Load.m_column8="否";
COleDateTime m_Time=m_Time.GetCurrentTime();
int y=m_Time.GetYear(),m=m_Time.GetMonth(),d=m_Time.GetDay();
CTime m_Now(y,m,d,0,0,0);
m_Load.m_column5=m_Now;
COleDateTime time3(0,4,1,0,0,0),time4(0,4,16,0,0,0);
COleDateTimeSpan diff;
diff=time4-time3;
m_Time=m_Time.GetCurrentTime();
m_Time.operator +=(diff);
y=m_Time.GetYear(),m=m_Time.GetMonth(),d=m_Time.GetDay();
CTime m_After(y,m,d,0,0,0);
m_Load.m_column7 =m_After;
m_Load.m_column10=m_Edit17;
m_Load.m_column12=m_Edit18;
m_Load.m_column13=m_Edit19;
m_Load.Update();
m_Load.Requery();
m_Load.Close();
//---------------------------------------------------------------------------
m_Total++;
CString str;
str.Format("图书%d",m_Total);
m_msf.SetRow(m_Total);
m_msf.SetCol(0);
m_msf.SetText(str);
m_msf.SetCol(1);
m_msf.SetText(m_Edit13);
m_msf.SetCol(2);
m_msf.SetText(m_Edit14);
m_msf.SetCol(3);
m_msf.SetText(m_Edit4);
m_msf.SetCol(4);
m_msf.SetText(m_Edit2);
// m_Time.operator =(m_Load.m_column5);
y=m_Now.GetYear();
m=m_Now.GetMonth();
d=m_Now.GetDay();
str.Format("%d-%d-%d",y,m,d);
m_msf.SetCol(5);
m_msf.SetText(str);
m_msf.SetCol(6);
y=m_After.GetYear();
m=m_After.GetMonth();
d=m_After.GetDay();
str.Format("%d-%d-%d",y,m,d);
m_msf.SetText(str);
m_Edit24=str;
str="未过期";
m_msf.SetCol(7);
m_msf.SetText(str);
m_Edit11++;
m_Edit21--;
UpdateData(FALSE);
MessageBox("已完成操作!");
}
void CReaderDlg::OnChangeEdit13()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
if((m_Which==RFound)||(m_Which==BZero))
{
m_Which=FullEdit_2;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -