当前位置: 首页>>代码示例>>C++>>正文


C++ TaskPtr::output方法代码示例

本文整理汇总了C++中TaskPtr::output方法的典型用法代码示例。如果您正苦于以下问题:C++ TaskPtr::output方法的具体用法?C++ TaskPtr::output怎么用?C++ TaskPtr::output使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在TaskPtr的用法示例。


在下文中一共展示了TaskPtr::output方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: writeToDB

bool DBManager::writeToDB(TaskPtr pTask)
{
    assert(pTask);

    OJChar_t buffer[MaxBufferSize];

    const TaskInputData & input = pTask->input();
    const TaskOutputData & output = pTask->output();


    //更新结果
    OJSprintf(buffer, Statement::UpdateSolutionResult5.c_str(), output.Result, output.RunTime, 
        output.RunMemory, output.PassRate, input.SolutionID);
    if(!sqlDriver_->query(buffer))
    {
        return false;
    }

    //更新用户提交数量
    OJSprintf(buffer, Statement::UpdateUserSubmit2.c_str(), 
        input.UserName.c_str(), input.UserName.c_str());
    if(!sqlDriver_->query(buffer))
    {
        return false;
    }
    
    //用户已解决的。不管答案是否正确都执行此操作,防止是重判,而导致信息不及时刷新。
    OJSprintf(buffer, Statement::UpdateUserSolved3.c_str(), 
        input.UserName.c_str(), JudgeCode::Accept, input.UserName.c_str());
    if(!sqlDriver_->query(buffer))
    {
        return false;
    }

    //题目提交数量
    OJSprintf(buffer, Statement::UpdateProblemSubmit2.c_str(), input.ProblemID, input.ProblemID);
    if(!sqlDriver_->query(buffer))
    {
        return false;
    }

    //题目通过的数量
    OJSprintf(buffer, Statement::UpdateProblemAccept3.c_str(), 
        input.ProblemID, JudgeCode::Accept, input.ProblemID);
    if(!sqlDriver_->query(buffer))
    {
        return false;
    }
    
    //如果未通过,写错误原因

    if(output.Result == JudgeCode::CompileError)//如果编译错误
    {
        OJSprintf(buffer, Statement::DeleteCompile1.c_str(), input.SolutionID);
        if(!sqlDriver_->query(buffer))
        {
            return false;
        }

        OJString compileError = output.CompileError;
        sqlDriver_->escapeString(compileError);

        OJSprintf(buffer, Statement::InsertCompile2.c_str(), 
            input.SolutionID, compileError.c_str());
        if(!sqlDriver_->query(buffer))
        {
            return false;
        }
    }
    else if(output.Result == JudgeCode::RuntimeError)//运行时错误
    {
        OJSprintf(buffer, Statement::DeleteRuntime1.c_str(), input.SolutionID);
        if(!sqlDriver_->query(buffer))
        {
            return false;
        }

        OJString runtimeError = output.RunTimeError;
        sqlDriver_->escapeString(runtimeError);

        OJSprintf(buffer, Statement::InsertRuntime2.c_str(), 
            input.SolutionID, runtimeError.c_str());
        if(!sqlDriver_->query(buffer))
        {
            return false;
        }
    }

    return true;
}
开发者ID:slk000,项目名称:FreeJudger,代码行数:90,代码来源:DBManager.cpp


注:本文中的TaskPtr::output方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。