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

📄 readerdlg.cpp

📁 图书馆管理系统c++完成版
💻 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 + -