论文无忧网提供:计算机毕业论文范文|计算机毕业设计|计算机毕业论文
栏目导航 ASP Java Web .NET VB6.0 JAVA VC VF DELPHI PB 计算机网络 计算机科学与技术 PHP 安卓APP 其他 C# 代写论文
当前位置: > 计算机 > VC >

B(VC)自动阅卷系统

  4.3.1 E-R模型

为了把用户的数据要求清晰明确地表达出来,通常要建立一个概念性的数据模型(也称为信息模型)。概念性数据模型是一种面向问题的数据模型,是按照用户的观点来对数据和信息建模。它描述了从用户角度看到的数据,它反映了用户的现实环境,且与在软件系统中的实现方法无关。

内容来自www.paper51.com

在本系统数据表中用到的主键有: copyright paper51.com

Ø 用户信息表中的用户编号:UserSN

paper51.com

Ø 试题信息表中的编号:ID

内容来自www.paper51.com

Ø 成绩信息表中的编号:UserSN paper51.com

4.3.2在本系统中使用ADO的过程及详解添加ADO数据源

paper51.com

本系统采用ADO来访问SQL数据库,这里充分应用了C++类封装的功能,根据本系统应用的范围,将访问数据库的功能函数封装在一个类CMyDatabase。

内容来自www.paper51.com

正如前所述,ADO是访问数据库的一个方法,它提供了不同的接口。ADO库包含三个基本接口:_ConnectionPtr接口、_CommandPtr接口和_RecordsetPtr接口。    _ConnectionPtr接口返回一个记录集或一个空指针。通常使用它来创建一个数据连接或执行一条不返回任何结果的SQL语句,如一个存储过程。使用_ConnectionPtr接口返回一个记录集不是一个好的使用方法。对于要返回记录的操作通常用_RecordserPtr来实现。而用_ConnectionPtr操作时要想得到记录条数得遍历所有记录,而用_RecordserPtr时不需要。     _CommandPtr接口返回一个记录集。它提供了一种简单的方法来执行返回记录集的存储过程和SQL语句。在使用_CommandPtr接口时,你可以利用全局_ConnectionPtr接口,也可以在_CommandPtr接口里直接使用连接串。如果你只执行一次或几次数据访问操作,后者是比较好的选择。但如果你要频繁访问数据库,并要返回很多记录集,那么,你应该使用全局_ConnectionPtr接口创建一个数据连接,然后使用_CommandPtr接口执行存储过程和SQL语句。     _RecordsetPtr是一个记录集对象。与以上两种对象相比,它对记录集提供了更多的控制功能,如记录锁定,游标控制等。同_CommandPtr接口一样,它不一定要使用一个已经创建的数据连接,可以用一个连接串代替连接指针赋给_RecordsetPtr的connection成员变量,让它自己创建数据连接。如果你要使用多个记录集,最好的方法是同Command对象一样使用已经创建了数据连接的全局_ConnectionPtr接口,然后使用_RecordsetPtr执行存储过程和SQL语句。  内容来自www.paper51.com

根据这些,我们将数据库的各种操作封装到CMyDatabase类里。几个主要函数说明如下:

copyright paper51.com

CMyDatabase::CMyDatabase() copyright paper51.com

{//在构造函数中初始化三个接口

copyright paper51.com

    m_bInit=FALSE; http://www.paper51.com

    CString szMsg; http://www.paper51.com

    if(CoInitialize(NULL)== S_OK) 内容来自www.paper51.com

    { 内容来自www.paper51.com

       AfxMessageBox("CoInitializealready OK!"); 内容来自论文无忧网 www.paper51.com

    }

http://www.paper51.com

    if(FAILED(m_pConnection.CreateInstance("ADODB.Connection"))) copyright paper51.com

    { paper51.com

       szMsg.Format("Create_ConnectionPtr Instance failed:(%d)!",GetLastError()); copyright paper51.com

       AfxMessageBox(szMsg);

copyright paper51.com

       return; copyright paper51.com

    }  

copyright paper51.com

    if(FAILED(m_pRecordPtr.CreateInstance("ADODB.Recordset")))

copyright paper51.com

    {

copyright paper51.com

       szMsg.Format("Create_RecordPtr Instance failed:(%d)!",GetLastError()); paper51.com

       AfxMessageBox(szMsg);

http://www.paper51.com

       return; copyright paper51.com

    } paper51.com

    if(FAILED(m_pCommand.CreateInstance("ADODB.Command"))) paper51.com

    {

copyright paper51.com

       szMsg.Format("Create_CommandPtr Instance failed:(%d)!",GetLastError()); 内容来自www.paper51.com

       AfxMessageBox(szMsg);

内容来自www.paper51.com

       return;

内容来自论文无忧网 www.paper51.com

    }

内容来自www.paper51.com

    m_bInit=TRUE; paper51.com

} copyright paper51.com

CMyDatabase::~CMyDatabase()

内容来自论文无忧网 www.paper51.com

{//析构函数中释放 paper51.com

    m_pConnection.Release();

paper51.com

    m_pCommand.Release();

http://www.paper51.com

    m_pRecordPtr.Release(); 内容来自论文无忧网 www.paper51.com

}

paper51.com

BOOL CMyDatabase::Open(CString Database) paper51.com

{ http://www.paper51.com

    if(!m_bInit)

paper51.com

    {

内容来自论文无忧网 www.paper51.com

       TRACE("Database:database init error");

内容来自论文无忧网 www.paper51.com

       returnFALSE; copyright paper51.com

    } 内容来自www.paper51.com

    CString strSRC; paper51.com

    strSRC.Format("Provider=Microsoft.Jet.OLEDB.4.0;DataSource='%s'", paper51.com

       Database); copyright paper51.com

    TRACE("%s\r\n%s",Database,strSRC); 内容来自论文无忧网 www.paper51.com

    _bstr_tbstrSRC(strSRC); 内容来自论文无忧网 www.paper51.com

    m_pConnection->CursorLocation=adUseClient;//游标类型 http://www.paper51.com

    try 内容来自论文无忧网 www.paper51.com

    {

内容来自www.paper51.com

       m_pConnection->Open(bstrSRC,"","",-1);

copyright paper51.com

    } 内容来自www.paper51.com

    catch (_com_error&e ) { paper51.com

       CStringszMsg;

copyright paper51.com

       szMsg.Format("%s",e.ErrorMessage()); copyright paper51.com

       AfxMessageBox(szMsg); copyright paper51.com

       returnFALSE;

copyright paper51.com

    }  

paper51.com

    return TRUE; 内容来自论文无忧网 www.paper51.com

} 内容来自www.paper51.com

BOOL CMyDatabase::Excute(CString Sql) copyright paper51.com

{//执行    SQL语句

http://www.paper51.com

    _bstr_tbstrSql(Sql); copyright paper51.com

    m_pCommand->ActiveConnection=m_pConnection;

http://www.paper51.com

    m_pCommand->CommandText=bstrSql; http://www.paper51.com

    m_pCommand->CommandType=adCmdText;

http://www.paper51.com

    m_pCommand->Parameters->Refresh(); 内容来自论文无忧网 www.paper51.com

    try http://www.paper51.com

    {

内容来自论文无忧网 www.paper51.com

       m_pRecordPtr=m_pCommand->Execute(NULL,NULL,adCmdUnknown);

内容来自www.paper51.com

    }

paper51.com

    catch (_com_error&e ) { 内容来自www.paper51.com

       CStringszMsg;

copyright paper51.com

       szMsg.Format("%s",e.ErrorMessage()); 内容来自论文无忧网 www.paper51.com

       AfxMessageBox(szMsg); copyright paper51.com

       returnFALSE;

内容来自www.paper51.com

    }

http://www.paper51.com

    return TRUE; 内容来自www.paper51.com

}

内容来自论文无忧网 www.paper51.com

void CMyDatabase::Close() paper51.com

{ paper51.com

    try  

内容来自论文无忧网 www.paper51.com

    {

内容来自www.paper51.com

       if(m_pConnection)  

http://www.paper51.com

       {

内容来自www.paper51.com

           if(m_pConnection->State   ==  adStateOpen)   内容来自www.paper51.com

              m_pConnection->Close();  

paper51.com

       }  

内容来自论文无忧网 www.paper51.com

    }   paper51.com

    catch(_com_error   &e)   http://www.paper51.com

    {   内容来自www.paper51.com

       CStringszMsg;

copyright paper51.com

       szMsg.Format("%s",e.ErrorMessage());

http://www.paper51.com

       AfxMessageBox(szMsg); http://www.paper51.com

       return;

paper51.com

    }  内容来自www.paper51.com

}

http://www.paper51.com

BOOL CMyDatabase::IsEOF() http://www.paper51.com

{//判断记录集是否为空

http://www.paper51.com

    if(m_pRecordPtr->GetadoEOF())

paper51.com

       returnTRUE; 内容来自论文无忧网 www.paper51.com

    else paper51.com

       returnFALSE;

内容来自www.paper51.com

} http://www.paper51.com

CString CMyDatabase::GetValueByName(CString coName)

http://www.paper51.com

{//根据字段来取记录值 http://www.paper51.com

    _variant_t varValue; http://www.paper51.com

    _variant_tvarName(coName);

copyright paper51.com

    varValue =m_pRecordPtr->GetCollect(varName);

内容来自论文无忧网 www.paper51.com

    CStringValue=(char *)_bstr_t(varValue);

内容来自www.paper51.com

    CCommon::Trim(Value);

http://www.paper51.com

    return Value;

内容来自论文无忧网 www.paper51.com

} paper51.com

------分隔线----------------------------
联系方式