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

📄 database.cpp

📁 一个用VC++6.0做的图书馆管理系统,界面精致,功能详细
💻 CPP
字号:
// DataBase.cpp: implementation of the CDataBase class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Library.h"
#include "DataBase.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CDataBase::CDataBase()
{

}
CDataBase::CDataBase(CString biao)
{
	try
	{
    
		m_pConnection.CreateInstance("ADODB.Connection");
		_bstr_t strConnect="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=sysinfo.mdb";// 打开本地Access库aaa.mdb
		m_pConnection->Open(strConnect,"","",adModeUnknown);

		//AfxMessageBox("连接数据库成功!");
	}
	catch(_com_error e)
	{
		AfxMessageBox(e.Description());
	}
	try
	{

		m_pRecordset.CreateInstance(__uuidof(Recordset));
		//m_pConnection->Execute((_bstr_t)biao,NULL,adCmdText);
		m_pRecordset ->Open((_bstr_t)biao,_variant_t((IDispatch*) m_pConnection,true), //设置活动连接
							adOpenDynamic,//游标类型
							adLockOptimistic,//锁的类型
							adCmdText);

		//AfxMessageBox("创建结果集成功!");
	}
	catch(_com_error e)
	{
		AfxMessageBox(e.Description());
	}

}

CDataBase::~CDataBase()
{

}
void  CDataBase::DengLu(CString strName,CString strPw)
{
	LonginFlag=0;
	try
	{
		if(!m_pRecordset->BOF)
			m_pRecordset->MoveFirst();
		else
		{
			AfxMessageBox("表内数据为空");
			exit(0);
		}
		while(!m_pRecordset->adoEOF)
		{

			vUsername = m_pRecordset->GetCollect("username");///取得username字段的值
			if(strName==(_bstr_t)vUsername)
			{
				vPW = m_pRecordset->GetCollect("password");
				//temp=(char*)(_bstr_t)vPW;
				if(strPw==(_bstr_t)vPW)
				{
					//LonginFlag=1;
					CPublic::LF=1;
					CPublic::adminID=strName;
					//AfxMessageBox("欢迎"+strName+"登录!");
				}
				
			}
			m_pRecordset->MoveNext();///移到下一条记录
		}
		if(CPublic::LF!=1)
		{
			AfxMessageBox("密码错误!");
		}		
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}

	m_pRecordset->Close();
    m_pRecordset = NULL; 
	if(m_pConnection->State)
    m_pConnection->Close();
    m_pConnection= NULL;
	//AfxMessageBox("关闭数据库成功!");
	//return LonginFlag;
}

int CDataBase::XXMM(CString jmm,CString xmm,CString qrxmm)
{
	xg=0;
	try
	{
		if(!m_pRecordset->BOF)
			m_pRecordset->MoveFirst();
		else
		{
			AfxMessageBox("表内数据为空");
			exit(0);
		}
		while(!m_pRecordset->adoEOF)
		{

			vUsername = m_pRecordset->GetCollect("username");///取得username字段的值
			if(CPublic::adminID==(_bstr_t)vUsername)
			{
				vPW = m_pRecordset->GetCollect("password");
				//temp=(char*)(_bstr_t)vPW;
				if(jmm==(_bstr_t)vPW)
				{
					if(xmm!="")
					{
						if(xmm==qrxmm)
						{
							try
							{
								m_pRecordset->PutCollect("password",_bstr_t(xmm));
								m_pRecordset->Update();
								AfxMessageBox("修改密码成功!");
							}
							catch(_com_error *e)
							{
								AfxMessageBox(e->ErrorMessage());
							}
							xg=1;
						}
						else
						{
							AfxMessageBox("两次输入的新密码不一致,请重新输入!");
						}
					}
					else
					{
						AfxMessageBox("密码不能为空!");
					}
				}
				else
				{
					AfxMessageBox("旧密码错误!");
				}
				
			}
			m_pRecordset->MoveNext();///移到下一条记录
		}
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}

	m_pRecordset->Close();
    m_pRecordset = NULL; 
	if(m_pConnection->State)
    m_pConnection->Close();
    m_pConnection= NULL;
	return xg;
}
void CDataBase::QHYH(CString qhyhm,CString qhyhpw)
{
	LonginFlag=0;
	try
	{
		if(!m_pRecordset->BOF)
			m_pRecordset->MoveFirst();
		else
		{
			AfxMessageBox("表内数据为空");
			exit(0);
		}
		while(!m_pRecordset->adoEOF)
		{

			vUsername = m_pRecordset->GetCollect("username");///取得username字段的值
			if(qhyhm==(_bstr_t)vUsername)
			{
				vPW = m_pRecordset->GetCollect("password");
				//temp=(char*)(_bstr_t)vPW;
				if(qhyhpw==(_bstr_t)vPW)
				{
					//LonginFlag=1;
					CPublic::LF=1;
					CPublic::adminID=qhyhm;
					AfxMessageBox("切换用户成功!");
					//AfxMessageBox(CPublic::adminID);
				}
				
			}
			m_pRecordset->MoveNext();///移到下一条记录
		}
		if(CPublic::LF!=1)
		{
			AfxMessageBox("密码错误!");
		}		
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}

	m_pRecordset->Close();
    m_pRecordset = NULL; 
	if(m_pConnection->State)
    m_pConnection->Close();
    m_pConnection= NULL;
	//AfxMessageBox("关闭数据库成功!");
}

int CDataBase::XTCSH()
{
	xtcsh=0;
	try
	{
		if(!m_pRecordset->BOF)
			m_pRecordset->MoveFirst();
		else
		{
			AfxMessageBox("表内数据为空");
			exit(0);
		}
		while(!m_pRecordset->adoEOF)
		{

			vUsername = m_pRecordset->GetCollect("username");///取得username字段的值
			if(CPublic::adminID==(_bstr_t)vUsername)
			{
				//AfxMessageBox(CPublic::adminID);
				vFG = m_pRecordset->GetCollect("flag");
				//temp=(char*)(_bstr_t)vPW;
				if(1==atoi((char*)(_bstr_t)vFG))
				{
					xtcsh=1;	
				}
					
			}
			m_pRecordset->MoveNext();///移到下一条记录
		}
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}

	m_pRecordset->Close();
    m_pRecordset = NULL; 
	if(m_pConnection->State)
    m_pConnection->Close();
    m_pConnection= NULL;
	return xtcsh;
}
int CDataBase::ZSLK(CString zslkmm)
{
	zslk=0;
	try
	{
		if(!m_pRecordset->BOF)
			m_pRecordset->MoveFirst();
		else
		{
			AfxMessageBox("表内数据为空");
			exit(0);
		}
		while(!m_pRecordset->adoEOF)
		{

			vUsername = m_pRecordset->GetCollect("username");///取得username字段的值
			if(CPublic::adminID==(_bstr_t)vUsername)
			{
				vPW = m_pRecordset->GetCollect("password");
				//temp=(char*)(_bstr_t)vPW;
				if(zslkmm==(_bstr_t)vPW)
				{
					zslk=1;
					
				}
				else
				{
					AfxMessageBox("密码错误!");
					
				}
				
			}
			m_pRecordset->MoveNext();///移到下一条记录
		}
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}

	m_pRecordset->Close();
    m_pRecordset = NULL; 
	if(m_pConnection->State)
    m_pConnection->Close();
    m_pConnection= NULL;
	return zslk;
}

int CDataBase::XSbookinfo(CString bookname,CString zuozhe,CString leibie,CString ISBN,CString chubs,CString cbrq,CString jiage,CString shul,CString strsjwz)
{
	m_pRecordset->AddNew();
	try
	{
		m_pRecordset->PutCollect("书名",_bstr_t(bookname));
		m_pRecordset->PutCollect("作者",_bstr_t(zuozhe));
		m_pRecordset->PutCollect("图书类别",_bstr_t(leibie));
		m_pRecordset->PutCollect("ISBN",_bstr_t(ISBN));
		m_pRecordset->PutCollect("出版社",_bstr_t(chubs));
		m_pRecordset->PutCollect("出版日期",_bstr_t(cbrq));
		m_pRecordset->PutCollect("定价",_bstr_t(jiage));
		m_pRecordset->PutCollect("总藏书量",_bstr_t(shul));
		m_pRecordset->PutCollect("馆内剩余",_bstr_t(shul));
		m_pRecordset->PutCollect("书架位置",_bstr_t(strsjwz));
		//m_pRecordset->PutCollect("入库时间",_bstr_t(shul));
		m_pRecordset->Update();
		//AfxMessageBox("添加成功!");
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}

	_variant_t TSGCID;
	int GCID;
	try
	{
		TSGCID=m_pRecordset->GetCollect("馆藏ID");
		GCID=atoi((char*)(_bstr_t)TSGCID);
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}
	m_pRecordset->Close();
    m_pRecordset = NULL; 
	if(m_pConnection->State)
    m_pConnection->Close();
    m_pConnection= NULL;
	return GCID;
}

void CDataBase::SClibrary(int GCID,int sl)
{
	int tsid;
	CString Ctsid,CGCID;
	tsid=GCID*100000;
	CGCID.Format("%d",GCID);
	for(int i=1;i<=sl;i++)
	{
		m_pRecordset->AddNew();
		tsid=tsid+1;
		Ctsid.Format("%d",tsid);
		try
		{
			m_pRecordset->PutCollect("图书ID",_bstr_t(Ctsid));
			m_pRecordset->PutCollect("馆藏ID",_bstr_t(CGCID));
			m_pRecordset->Update();
			
		}
		catch(_com_error *e)
		{
			AfxMessageBox(e->ErrorMessage());
		}
	}
	AfxMessageBox("添加成功!");
	m_pRecordset->Close();
    m_pRecordset = NULL; 
	if(m_pConnection->State)
    m_pConnection->Close();
    m_pConnection= NULL;
}

CString CDataBase::TSGLADDLB(CString leibie)
{
	int n=0;
	int T=0,J=0,C=0;
	CString TT,JJ,CC;
	CString temp,tempT,tempJ,tempC;
	try
	{
		_variant_t vLM;
		if(!m_pRecordset->BOF)
			m_pRecordset->MoveFirst();
		else
		{
			AfxMessageBox("表内数据为空");
			exit(0);
		}
		while(!m_pRecordset->adoEOF)
		{
			vLM= m_pRecordset->GetCollect("类别名称");
			if(vLM.vt==VT_NULL)
			{
				T=(atoi)((char*)(_bstr_t)m_pRecordset->GetCollect("厅"));
				J=(atoi)((char*)(_bstr_t)m_pRecordset->GetCollect("架"));
				C=(atoi)((char*)(_bstr_t)m_pRecordset->GetCollect("层"));
			}
			else
			{
				if(leibie==(char*)(_bstr_t)vLM)
				{
					tempT=(char*)(_bstr_t)m_pRecordset->GetCollect("厅");
					tempJ=(char*)(_bstr_t)m_pRecordset->GetCollect("架");
					tempC=(char*)(_bstr_t)m_pRecordset->GetCollect("层");
					temp=tempT+"-"+tempJ+"-"+tempC;
					n=n+1;
				}
			}
			m_pRecordset->MoveNext();///移到下一条记录
		}
		if(n==0)
		{
			try
			{
				m_pRecordset->AddNew();
				m_pRecordset->PutCollect("类别名称",_bstr_t(leibie));
				if(T<=4)
				{
					if(J<=30)
					{
						if(C<=6)
						{
							C=C+1;
							TT.Format("%d",T);
							JJ.Format("%d",J);
							CC.Format("%d",C);
							m_pRecordset->PutCollect("厅",_bstr_t(TT));
							m_pRecordset->PutCollect("架",_bstr_t(JJ));
							m_pRecordset->PutCollect("层",_bstr_t(CC));
						}
						else
						{
							J=J+1;
							C=1;
							TT.Format("%d",T);
							JJ.Format("%d",J);
							CC.Format("%d",C);
							m_pRecordset->PutCollect("厅",_bstr_t(TT));
							m_pRecordset->PutCollect("架",_bstr_t(JJ));
							m_pRecordset->PutCollect("层",_bstr_t(CC));
						}
					}
					else
					{
						T=T+1;
						J=1;
						C=1;
						TT.Format("%d",T);
						JJ.Format("%d",J);
						CC.Format("%d",C);
						m_pRecordset->PutCollect("厅",_bstr_t(TT));
						m_pRecordset->PutCollect("架",_bstr_t(JJ));
						m_pRecordset->PutCollect("层",_bstr_t(CC));
					}
				}
				else
				{
					AfxMessageBox("书架不够,请在1号厅新增书架!");
				}
				m_pRecordset->Update();
			}
			catch(_com_error e)
			{
				AfxMessageBox(e.Description());
			}
		}
	}

	catch(_com_error e)
	{
		AfxMessageBox(e.Description());
	}
////////更新位置信息
	try
	{
		_variant_t vSJWZ;
		if(!m_pRecordset->BOF)
		{
			m_pRecordset->MoveFirst();
			while(!m_pRecordset->adoEOF)
			{
				vSJWZ= m_pRecordset->GetCollect("类别名称");
				if(vSJWZ.vt==VT_NULL)
				{
					m_pRecordset->PutCollect("厅",_bstr_t(TT));
					m_pRecordset->PutCollect("架",_bstr_t(JJ));
					m_pRecordset->PutCollect("层",_bstr_t(CC));
					m_pRecordset->Update();
				}	
				else
				{
					m_pRecordset->GetCollect("类别名称");
				}
				m_pRecordset->MoveNext();
			}
		}
		else
		{
			AfxMessageBox("表内数据为空");
			exit(0);
		}	
	}
	catch(_com_error e)
	{
		AfxMessageBox(e.Description());
	}
	m_pRecordset->Close();
    m_pRecordset = NULL; 
	if(m_pConnection->State)
    m_pConnection->Close();
    m_pConnection= NULL;

	return temp;
}
CLby CDataBase::CXlibrary()
{
	_variant_t vZCFlag;
	CLby Library;
	Library.zk=0;
	Library.jc=0;
	//CString temp,tempZC,tempJC;
	try
	{
		
		if(!m_pRecordset->BOF)
			m_pRecordset->MoveFirst();
		else
		{
			AfxMessageBox("表内数据为空");
			exit(0);
		}
		while(!m_pRecordset->adoEOF)
		{

			vZCFlag = m_pRecordset->GetCollect("是否在库");
			if(atoi((char*)(_bstr_t)vZCFlag)==0)
			{
				//ZC=ZC+1;
				Library.zk=Library.zk+1;
			}
			else
			{
				//JC=JC+1;
				Library.jc=Library.jc+1;
			}
			m_pRecordset->MoveNext();///移到下一条记录
		}
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}

	m_pRecordset->Close();
    m_pRecordset = NULL; 
	if(m_pConnection->State)
    m_pConnection->Close();
    m_pConnection= NULL;

	//tempZC.Format("%d",ZC);
	//tempJC.Format("%d",JC);
	//temp=tempZC+"/"+tempJC;
	return Library;
}

int CDataBase::YHGL()
{
	int n=0;
	_variant_t vNAME,vFlag;
	try
	{
		if(!m_pRecordset->BOF)
			m_pRecordset->MoveFirst();
		else
		{
			AfxMessageBox("表内数据为空!");
			exit(0);
		}
		while(!m_pRecordset->adoEOF)
		{
			vNAME=m_pRecordset->GetCollect("username");
			if(CPublic::adminID==(_bstr_t)vNAME)
			{
				vFlag=m_pRecordset->GetCollect("flag");
				if(1==atoi((char*)(_bstr_t)vFlag))
				{
					n=1;
				}
			}
			m_pRecordset->MoveNext();
		}
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}
/*	m_pRecordset->Close();
    m_pRecordset = NULL; 
	if(m_pConnection->State)
    m_pConnection->Close();
    m_pConnection= NULL;
*/
	return n;
}

void CDataBase::YHGL_TJ(CString name,CString pw1,CString pw2)
{
	_variant_t vNAME;
	bool add=true;
	int YHGL_TJ=0;
	try
	{
		if(!m_pRecordset->BOF)
			m_pRecordset->MoveFirst();
		else
		{
			AfxMessageBox("表内数据为空!");
			exit(0);
		}
		while(!m_pRecordset->adoEOF)
		{
			vNAME=m_pRecordset->GetCollect("username");
			if(name==(_bstr_t)vNAME)
			{
				AfxMessageBox("该用户名已存在!");
				add=false;
			}
			m_pRecordset->MoveNext();
		}
		if(add==true)
		{
			if(pw1==pw2)
			{
				m_pRecordset->AddNew();
				try
				{
					m_pRecordset->PutCollect("username",_bstr_t(name));
					m_pRecordset->PutCollect("password",_bstr_t(pw1));
					m_pRecordset->Update();
					AfxMessageBox("添加新用户成功!");
				}
				catch(_com_error *e)
				{
					AfxMessageBox(e->ErrorMessage());
				}
			}
			else
			{
				AfxMessageBox("两次密码不一致,请重新输入!");
			}
		}
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}
	m_pRecordset->Close();
    m_pRecordset = NULL; 
	if(m_pConnection->State)
    m_pConnection->Close();
    m_pConnection= NULL;
}

int CDataBase::YHGL_SC(CString name)
{
	int n=0;
	_variant_t vNAME;
	try
	{
		if(!m_pRecordset->BOF)
			m_pRecordset->MoveFirst();
		else
		{
			AfxMessageBox("表内数据为空!");
			exit(0);
		}
		while(!m_pRecordset->adoEOF)
		{
			vNAME=m_pRecordset->GetCollect("username");
			if(name==(_bstr_t)vNAME)
			{
				//m_pRecordset->Delete();
				n=1;
			}
			m_pRecordset->MoveNext();
		}
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}
	m_pRecordset->Close();
    m_pRecordset = NULL; 
	if(m_pConnection->State)
    m_pConnection->Close();
    m_pConnection= NULL;

	return n;

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -