Sistema de gestión de bibliotecac
La cantidad de programación es muy grande
El núcleo es la consulta
Entonces, según su pregunta, publicaré un programa de consulta. El nivel de escritura es limitado.
#pragma once // V3.0.155591.61118002
///////////////. ///////// //////////////////////////////
//Contenido: La definición del tipo de clase de fila de CLibrary
//Nombre: CLibrary_rowtype
class CLibrary_rowtype {
public:
long m_iSuffix; sufijo 1
long m_logNumber; //Número de inicio de sesión 2
std::string m_BookName; //Nombre del libro. string m_AuthName; //Nombre del autor 4 (i )
std:: string m_CategoryName; //Número de categoría 5
std:: string m_PublishCompanyName; //Unidad de publicación
long m_PublishTime; //Tiempo de publicación
long m_Price; //Precio
public:
CLibrary_rowtype()
{
m_iSuffix = 0 ;
m_logNumber = 0;
m_BookName = "";
m_AuthName = "";
m_CategoryName = "";
p>
m_PublishCompanyName = "";
m_PublishTime = 0
m_Price = 0; >
}
virtual ~CLibrary_rowtype (){;}
público:
////////////// //////////////// /////////////////////////////////// /////Función: GetCol_iSuffix
//Efecto: obtener referencia de col. col es iSuffix
//Retorno: long amp
long amp; ; GetCol_iSuffix(void)
{
return m_iSuffix;
}
//////////// /////////////// //////////////////////////////////// ///Función: GetCol_BookName
//Efecto: obtener la referencia de la col. es BookName
//Re
girar: std:: amplificador de cadena
std:: amplificador de cadena GetCol_BookName(void)
{
return m_BookName; }
/////////////////////////////////////////// // //////////////////////////////////Función: GetCol_AuthName
//Efecto: obtener referencia de col. col es AuthName
//Return: std::string amp;
std::string amp; GetCol_AuthName(void)
{
return m_AuthName
}
}
;
//fin de clase CLibrary_rowtype
// //////////////////////////////////////////// ///////// ///
//Contenido: La definición del tipo de clase tbl
//Nombre: CLibrary
class CLibrary {
privado:
CLibrary_rowtype m_EmptyRow;
std: :vectorlt; CLibrary_rowtypegt;
std: :multimaplt; cadena, longgt; m_BookName_idxmmap;
std::multimaplt; std::string, longgt; m_AuthName_idxmmap;
público:
typedef CLibrary_rowtype;
typedef std::vectorlt ;longgt; RPSTYPE; //definición de tipo RPS(conjunto de punteros de retorno)
typedef std::vectorlt;CLibrary_rowtypegt;::iterator TBLITTYPE;
público:
CLibrary()
{
}
virtual ~CLibrary(){;}
público:
//////////////////////////////////////// //////////// ///////////
//Función: Borrar
//Efecto: borrar el tbl.
//Devolución: sin devolución
void Clear(void)
{
m_DATAcorpora.clear();
m_BookName_idxmmap.clear();
> m_AuthName_idxmmap.clear();
}
///////////////////////////// / ///////////////////////////////////Función: GetRowCount
/ /Efecto: obtener el recuento de filas del tbl
//Return: long
long GetRowCount( )
{
return (long )m_DATAcorpora. tamaño();
}
////////////////////////////// // ////////////////////////////////////////Función: GetRowCount p>
//Efecto: obtiene el recuento de filas del tbl según RPS
//Retorno: long
long GetRowCount(const std::vectorlt; longgt; amp; vRps)
{
return (long)vRps.size();
}
//////// ///// ///////////////////////////////////////////////// // ////
//Función: GetRow
//Efecto: obtener una fila designada
//Retorno: CLibrary_rowtypeamp;
CLibrary_rowtype amp; GetRow(long lRowNum)
{
if(lRowNumgt;=0amp;amp;lRowNumlt;(long)m_DATAcorpora.size())
return m_DATAcorpora[lRowNum];
else
{
CLibrary_rowtype tmpEmptyrow;
m_EmptyRow = tmpEmptyrow;
devolver m_EmptyRow;
}
}
///////////////////// /// /////////////////////////////////////////
/ / Función: GetRow
//Efecto: obtiene una fila designada dentro de RPS
//Retorno: CLibrary_rowtypeamp;
CLibrary_rowtypeamp; longgt; amp; vRps, long lRowNum)
{
long ltmp;
do{
{
Biblioteca
_rowtype tmpEmptyrow;
m_EmptyRow = tmpEmptyrow;
}
ltmp = lRowNum;
if(ltmplt;0) devuelve m_EmptyRow;
if(ltmpgt;=(long)vRps.size()) return m_EmptyRow;
ltmp = vRps[lRowNum];
if(ltmplt;0) return m_EmptyRow;
if(ltmpgt;=(long)m_DATAcorpora.size()) return m_EmptyRow;
return m_DATAcorpora[ltmp];
} while( 0);
}
//////////////////////////////// / ///////////////////////////////Función: Agregar
//Efecto: agregar una fila designada y construye los índices
//Return: no return
void Add(const CLibrary_rowtype amp; varRow)
{
m_DATAcorpora . push_back( varRow);
m_BookName_idxmmap.insert(
std::pairlt; std::string, longgt;(
varRow.m_BookName,
p>(long)(m_DATAcorpora.size()-1) ));
m_AuthName_idxmmap.insert(
std::pairlt; std::string, longgt ; (
varRow.m_AuthName,
(long)(m_DATAcorpora.size()-1) )); / ///////////////////////////////////////////////// ///// /////////////
//Función: SelG_iSuffix
//Efecto: seleccionar y construir RPS donde se usa colgt; atravesar
//Retorno: sin retorno
void SelG_iSuffix(long iVal, std::vectorlt; longgt; amp; vRps) //(n/i)
{ p>
for(long ltmp=0;ltmplt;(long)m_DATAcorpora.size();ltmp)
if(m_DATAcorpora[ltmp].m_iSuffixgt;iVal) p>
vRps.push_back(ltmp);
}
>
/////////////////////////////////////////////// /// /////////////////
//Función: SelGc_iSuffix
//Efecto: seleccionar y construir RPS donde colgt; val. borrar rps primero.
//Retorno: sin retorno
void SelGc_iSuffix(long iVal, std::vectorlt; longgt; amp; vRps)
{
vRps.clear();
SelG_iSuffix(iVal, vRps)
/////// //// //////////////////////////////////////////////// //////
//Función: SelG_BookName
//Efecto: seleccionar y construir RPS donde colgt; val usa index
//Retorno: sin retorno
void SelG_BookName(std::string strVal, std::vectorlt;longgt;amp;vRps) //(i)
{
para (std::multimaplt;std ::string, longgt; ::iterator it=m_BookName_idxmmap.upper_bound(strVal);
it!=m_BookName_idxmmap.end(); it)
vRps.push_back( it-gt ;segundo );
}
//////////////////////// /////// ////////////////////////////
//Función: SelGc_BookName
//Efecto: seleccione y cree RPS donde colgt; val. borre rps primero.
//Retorno: sin retorno
void SelGc_BookName(std::string strVal, std::vectorlt;longgt; amp ; vRps)
{
vRps.clear()
SelG_BookName(strVal, vRps);
}
//////////////////////////////////////// /////////// ////////
//Función: SelG_AuthName
//Efecto: seleccionar y construir RPS donde colgt; usar índice
// Retorno: sin retorno
void SelG_AuthName(std::string iVal, std::string
vectorlt; longgt; amp; vRps) //(i)
{
for(std::multimaplt; std::string, longgt;::iterator it=m_AuthName_idxmmap.upper_bound (iVal);
it!=m_AuthName_idxmmap.end(); it)
vRps.push_back( it-gt; segundo
} p>
////////////////////////////////////////////// /// ///////////
//Función: SelGc_AuthName
//Efecto: seleccione y cree RPS donde colgt borre rps primero.
//Retorno: sin retorno
void SelGc_AuthName(std::string iVal, std::vectorlt; longgt; amp; vRps)
{ p>
vRps.clear();
SelG_AuthName(iVal, vRps);
}
////////// // ///////////////////////////////////////////////// /
//Función: SelE_iSuffix
//Efecto: seleccionar y construir RPS donde col=val usa atravesar
//Retorno: sin retorno
void SelE_iSuffix(long iVal, std:: vectorlt; longgt; amp; vRps) //(n/i)
{
for(long ltmp=0; ltmplt; (largo) m_DATAcorpora.size(); ltmp )
if(m_DATAcorpora[ltmp].m_iSuffix==iVal)
vRps.push_back( ltmp);
}
//////////////////////////////////////// //////// ////////////
//Función: SelE1_iSuffix
//Efecto: seleccione la primera fila donde col=val o devolver la fila predeterminada. p>
//Return: CLibrary_rowtypeamp;
CLibrary_rowtypeamp; SelE1_iSuffix(long iVal)
{
std: :vectorlt; vRps;
SelE_iSuffix( iVal, vRps
devuelve GetRow( vRps, 0 ); >/////
////////////////////////////////////////////////// //// /
//Función: SelEc_iSuffix
//Efecto: seleccione y cree RPS donde col=val borre rps primero.
// Retorno: sin retorno
void SelEc_iSuffix(long iVal, std::vectorlt; longgt; amp; vRps)
{
vRps.clear();
SelE_iSuffix(iVal, vRps);
}
////////////////////// ///// ////////////////////////////////////////////// //Función: SelNE_iSuffix
//Efecto: seleccionar y crear RPS donde col!=val
//Retorno: sin retorno
void SelNE_iSuffix(long iVal , std:: vectorlt; amp; vRps)
{
SelL_iSuffix(iVal, vRps); p>
}
////////////////////////////////////// ////// ///////////////////
//Función: SelNEc_iSuffix
//Efecto: seleccionar y construya RPS donde col!=val . borre rps primero.
//Retorno: sin retorno
void SelNEc_iSuffix(long iVal, std::vectorlt; longgt; amp; vRps)
{
vRps.clear();
SelNE_iSuffix(iVal, vRps
}
/ /////// //////////////////////////////////////////// //////// p>
//Función: SelE_BookName
//Efecto: seleccionar y construir RPS donde col=val usa índice
//Retorno: sin retorno
void SelE_BookName(std::string strVal, std::vectorlt;longgt;amp;vRps) //(i)
{
std ::pairlt; std::multimaplt ;std::string, longgt;::iterador, std::multimaplt; std::string, longgt;::iteratorgt;
pa = m_BookName_idxmmap.equal_range(strVal);
for(std::multimaplt; std::string, longgt;::iterator it=pa.first; it!=pa.segundo; it )
vRps.push_back( it-gt; segundo );
}
//////////////// ///////////////////////////////////////////////Función: SelE1_BookName
//Efecto: seleccione la primera fila donde col=val, o devuelva la fila predeterminada.
//Retorno: CLibrary_rowtypeamp;
CLibrary_rowtypeamp; SelE1_BookName( std:: cadena strVal)
{
std:: vectorlt; vRps;
SelE_BookName( strVal, vRps > return GetRow); (vRps, 0);
}
/////////////////////////// // ////////////////////////////
//Función: SelEc_BookName
// Efecto : seleccione y cree RPS donde col=val. borre rps primero.
//Retorno: sin retorno
void SelEc_BookName(std::string strVal, std::vectorlt; longgt; amplificador; vRps)
{
vRps.clear();
SelE_BookName(strVal, vRps); >
/////////////////////////////////////////////// // ///////////////
//Función: SelNE_BookName
//Efecto: seleccionar y construir RPS donde col!=val
//Retorno: sin retorno
void SelNE_BookName(std::string strVal, std::vectorlt;longgt;amp;vRps)
{
SelL_BookName(strVal, vRps);
SelG_BookName(strVal, vRps);
}
////////// // ///////////////////////////////////////////////// //
//Función: SelNEc_BookName
//Efecto: se
seleccione y cree RPS donde col!=val. borre rps primero.
//Return: no return
void SelNEc_BookName(std::string strVal, std::vectorlt;longgt; amplificador; vRps)
{
vRps.clear();
SelNE_BookName(strVal, vRps); >
/////////////////////////////////////////////// /// ////////////////
//Función: SelE_AuthName
//Efecto: seleccionar y construir RPS donde col=val usar índice p>
//Retorno: sin retorno
void SelE_AuthName(std::string iVal, std::vectorlt;longgt;amp;vRps) //(i)
{
std::pairlt; std::multimaplt; std::string, longgt;::iterator, std::multimaplt; ;
pa = m_AuthName_idxmmap.equal_range(iVal);
for(std::multimaplt; std::string,longgt;::iterator it=pa.first; it!= pa.segundo; it)
vRps.push_back( it-gt; segundo );
}
/////////// /// //////////////////////////////////////////////// //
//Función: SelE1_AuthName
//Efecto: selecciona la primera fila donde col=val, o devuelve la fila predeterminada.
//Retorno: CLibrary_rowtypeamp ;
CLibrary_rowtype & SelE1_AuthName(std::string iVal)
{
std::vectorlt;longgt;
SelE_AuthName (iVal, vRps) ;
return GetRow(vRps, 0);
}
////////////// //// ///////////////////////////////////////////// p>
/ /Función: SelEc_AuthName
//Efecto: seleccione y cree RPS donde col=val borre rps primero.
/
/Retorno: sin retorno
void SelEc_AuthName(std::string iVal, std::vectorlt;longgt;amp;vRps)
{
vRps.clear ();
SelE_AuthName(iVal, vRps);
}
/////////////////// ///////////////////////////////////////////////Función: SelNE_AuthName
//Efecto: seleccione y cree RPS donde col!=val
//Retorno: sin retorno
void SelNE_AuthName(std::string iVal, std :: vectorlt; amp; vRps)
{
SelL_AuthName(iVal,vRps);
SelG_AuthName(iVal,vRps);
}
//////////////////////////////////////// // //////////////////////////////Función: SelNEc_AuthName
//Efecto: seleccionar y construir RPS donde col!=val. borrar rps primero.
//Retorno: sin retorno
void SelNEc_AuthName(std::string iVal, std::vectorlt; longgt; amp; vRps)
{
vRps.clear();
SelNE_AuthName(iVal, vRps)
}
////////////////////////////////////////////////// //// /////////
//Función: SelL_iSuffix
//Efecto: seleccionar y construir RPS donde collt; val use traverse
/ /Retorno: sin retorno
void SelL_iSuffix(long iVal, std::vectorlt; longgt; amp; vRps) //(n/i)
{ p>
for(long ltmp=0;ltmplt;(long)m_DATAcorpora.size();ltmp )
if(m_DATAcorpora[ltmp].m_iSuffixlt;iVal)
vRps.push_back( ltmp);
}
///////////////////////////// ///// ///////////////////////////
//Función: SelLc_iSuffix
/
/Efecto: seleccione y cree RPS donde collt; val. borre rps primero.
//Retorno: sin retorno
void SelLc_iSuffix(long iVal, std::vectorlt; longgt; amp ; vRps)
{
vRps.clear()
SelL_iSuffix(iVal, vRps)
//////////////////////////////////////////////// /// ////////
//Función: SelL_BookName
//Efecto: seleccionar y construir RPS donde collt; val usa index
// Retorno: sin retorno
void SelL_BookName(std::string strVal, std::vectorlt;longgt; amp; vRps) //(i)
{
std::pairlt; std::multimaplt; std::string,longgt;::iterador, std::multimaplt; std::string,longgt;::iteratorgt;pa;
pa = m_BookName_idxmmap .equal_range(strVal);
for(std::multimaplt; std::string, longgt;::iterator it=m_BookName_idxmmap.begin(); it!=pa.first; it)
vRps.push_back( it-gt; segundo
}
///////////////// // ///////////////////////////////////////////
// Función: SelLc_BookName
//Efecto: seleccionar y construir RPS donde collt; borrar rps primero.
//Retorno: sin retorno
void SelLc_BookName( std::string strVal, std::vectorlt;longgt;amp;vRps)
{
vRps.clear();
SelL_BookName( strVal, vRps );
}
/////////////////////////////// ///// ///////////////////////////////////Función: SelL_AuthName
//Efecto: seleccione y cree RPS donde collt; val use index
//Retorno: sin retorno
void S
elL_AuthName(std::string iVal, std::vectorlt;longgt;amp;vRps) //(i)
{
std::pairlt; std::multimaplt; ::string, longgt; ::iterator, std::multimaplt; std::string, longgt; ::iteratorgt;
pa = m_AuthName_idxmmap.equal_range(iVal);
for(std::multimaplt; std::string, longgt;::iterator it=m_AuthName_idxmmap.begin(); it!=pa.first; it)
vRps.push_back( it-gt; segundo );
}
//////////////////////////////// // //////////////////////////////////////Función: SelLc_AuthName
//Efecto: seleccione y cree RPS donde collt; val. borre rps primero.
//Retorno: sin retorno
void SelLc_AuthName(std::string iVal, std::vectorlt ; largogt; vRps)
{
vRps.clear();
SelL_AuthName(iVal, vRps);
//////////////////////////////////////////// // /////////////////
//Función: RpsAnd
//Efecto: establece la intersección para RPSs varRpsSource1. también el resultado.
//Return: RPSTYPE amp;
RPSTYPE amp RpsAnd(RPSTYPE amp; varRpsSource1, RPSTYPE amp; varRpsSource2)
{ p>
std::sort(varRpsSource1.begin(), varRpsSource1.end());
std::sort( varRpsSource2.begin(), varRpsSource2.end()); p>
RPSTYPE source3(varRpsSource1.size() varRpsSource2.size());
RPSTYPE::iterator itNewEnd2 = std::set_intersection(
varRpsSource1.begin() , varRpsSource1 .end(), varRpsSource2.begin(), varRpsSo
urce2.end(), source3.begin() );
varRpsSource1.clear()
for(RPSTYPE::iterator it=source3.begin(); it!= itNewEnd2; it) varRpsSource1.push_back(*it);
return varRpsSource1;
}
///////////// ///////////////////////////////////////////////// p>
//Función: RpsOr
//Efecto: establecer unión para RPS, varRpsSource1 también es el resultado.
//Retorno: RPSTYPE amp;
RPSTYPE y RpsOr( RPSTYPE y varRpsSource1, RPSTYPE y varRpsSource2 )
{
std::sort( varRpsSource1.begin(), varRpsSource1.end() ); /p>
std::sort(varRpsSource2.begin(), varRpsSource2.end());
RPSTYPE source3(varRpsSource1.size() varRpsSource2.size());
RPSTYPE::iterator itNewEnd2 = std::set_union(
varRpsSource1.begin(), varRpsSource1.end(), varRpsSource2.begin(), varRpsSource2.end(), source3.begin()
varRpsSource1.clear();
for(RPSTYPE::iterator it=source3.begin(); it!=itNewEnd2; it) varRpsSource1.push_back(*it) ;
return varRpsSource1;
}
}
//fin de la clase CLibrary p>