DrGraph®软件考试系统接口文档

 

 

 

DrGraph®软件

考试接口文档手册

 

产品名称:

图形博士(DrGraph®)

用户单位:

昆明XX行业

编写人员:

陈昊明

时 间:

2013年8月

 

 

 

 

 

 

 

 

 

欢迎使用图形博士(DrGraph®)软件!

本手册适用于指导用户安装DrGraph®及后续对DrGraph®软件的操作,它将是用户工作的指南。

本手册目前由很多人持续地维护,其中的内容需要不断地更新。如果您有兴趣参加这项工作,请发邮件到 ChenBinWen@gmail.com 进行联系,也可以通过QQ:282397369 或msn: ChenBinWen@hotmail.com 在线联系。如果您希望得到一份印刷版本的手册,也请通过上述方式联系。

热忱欢迎志同道合的朋友们,我们可以在技术、市场等领域全方位合作。

本手册与软件将持续完善更新,您可以随时访问以下地址,以获取最新版本的文档与演示程序。

http://www.DrGraph.com

 

 

 

开发组

2013年8月

1.    概述    1

1.1    结构    1

1.2    准备工作    1

1.3    使用流程    1

1.4    与图形博士软件接口相关逻辑    1

2.    接口说明    3

2.1    概述    3

2.2    参数说明    5

2.2.1    文件名    5

2.2.2    打开指定脚本    6

2.2.3    指定屏幕    7

2.2.4    全屏显示    8

2.2.5    随机出题    9

2.2.6    合并显示    9

 

 

  1. 概述

    1. 结构

    考试系统分两大部分:管理系统与图形博士软件

    硬件系统包括考试控制端、考生端、评委端、主持人端、投影大屏幕

    1. 准备工作

    1. 在目标计算机上安装DrGraph软件,并注册
    2. 在C盘根目录下创建1.sch文件
    3. 将考试题库中相应的库文件拷贝到安装目录
    4. 编辑安装目录下的cbw.graph.cfg,根据三屏投影大屏最左端屏幕的左端位置,确定UIConfig节点中的StartMonitorIndex的属性值,缺省为0,表示起始的屏幕号。

    1. 使用流程

    1. 用户提前出题,保持在服务端
    2. 考试时,控制端从服务端读取题目并展示
    3. 考生作答
    4. 评委评分
      1. 与图形博士软件接口相关逻辑

    5. 用户出题时,需按规范格式出题
    6. 控制端相关逻辑
      1. 解析判断:若解析判断为图形相关题目时,需解析出其中的文件名称FileName.sch及参数Params
      2. 文件拷贝:拷贝FileName.sch文件(若FileName.files目录存在,也一并拷贝)到目标地址
      3. 参数构造:根据逻辑(详见下章)构造出参数,通过ShellExecute调用图形博士

     

  2. 接口说明

    1. 概述

    1. 字符串接口

      字符串接口为一个字符串,其结构为两部分,即文件名 参数,文法表示为

      FileName.sch[ paramName=paramValue]*

      *表示包含[]中部分零个或多个

      []中部分表示参数,格式为参数名=参数值

      文件名,后缀固定为.sch

        文件名为Windows合法文件名称,可包含路径

        paramName与paramValue均为字母与/或数字组合

    1. 考试管理系统判断逻辑

      考试系统读取得到字符串接口时,需要判断一下该字符串中是否存在.sch,若存在,则表示为图形博士相应逻辑,需进行相应处理

      bool __fastcall IsDrGraphLogic(AnsiString interfaceString) {

      int pos = interfaceString.Pos(".sch");

      bool result = pos != 0;

      return result;

        }

    1. 考试系统从字符串接口中取得文件名称、参数列表逻辑

      考试系统读取得到字符串接口时,若判断为图形博士逻辑,则可取出图形文件名称及参数列表

      AnsiString __fastcall GetDrGraphFileName(AnsiString interfaceString) {

      AnsiString result = "";

      if(IsDrGraphLogic(interfaceString))

           result = interfaceString.SubString(1, interfaceString.Pos(".sch") + 3).Trim();

      return result;

      }

      AnsiString __fastcall GetDrGraphParams(AnsiString interfaceString) {

      AnsiString result = "";

      if(IsDrGraphLogic(interfaceString))

           result = interfaceString.SubString(interfaceString.Pos(".sch") + 3, interfaceString.Length()).Trim();

      return result;

      }

    2. 考试系统拷贝文件逻辑

      拷贝图形博士文件时,首先拷贝文件,若存在对应的.files目录,则将该目录下的文件相应拷贝

      void __fastcall DoCopyFile(AnsiString fileName, AnsiString destDirectory) {

              AnsiString destFileName = destDirectory + ExtractFileName(fileName);

           CopyFile(fileName, destFileName, true);

              AnsiString directoryName = ChangeFileExt(fileName, ".files");

              destDirectory += ExtractFileName(directoryName) + "\";

              if(DirectoryExists(directoryName)) {

                  TStrings * fileNames = new TStringList;

                  BrowDirectory(fileNames, directoryName, "*.*", true);

                  for(int i = 0; i < fileNames->Count; ++i) {

                      AnsiString fileName = fileNames->Strings[i];

                      DoCopyFile(fileName, destDirectory);

                  }

              }

      }

       

      void __fastcall BrowDirectory(TStrings * strings,

          AnsiString PathName, AnsiString extName,

          bool OnlyFileFlag) {

          TSearchRec sr;

          // 列举所有的目录

          if (FindFirst(PathName + "*.*", faAnyFile, sr) == 0) {

              do {

                  if ((sr.Attr & faDirectory) && sr.Name != "." && sr.Name != ".." &&

                      !OnlyFileFlag)

                      BrowDirectory(strings, PathName + sr.Name + "\", extName,

                      OnlyFileFlag);

              }

              while (FindNext(sr) == 0);

              FindClose(sr);

          }

          // 列举所有文件

          if (FindFirst(PathName + extName, faAnyFile, sr) == 0) {

              do {

                  if (SameText(sr.Name, "Thumbs.db"))

                      continue;

                  if (!(sr.Attr & faDirectory)) {

                      AnsiString n = sr.Name;

                      if (n.Length())

                          strings->Add(PathName + n);

                  }

              }

              while (FindNext(sr) == 0);

              FindClose(sr);

          }

      }

       

    3. 考试系统调用图形博士逻辑

      考试系统构造出接口字符串后,可按以下方式调用图形博士

      void __fastcall CallDrGraph(AnsiString interfaceString) {

              if(IsDrGraphLogic(interfaceString))

      {

                  char exeFileName[MAX_PATH];

                  FindExecutable( "C:\1.sch", NULL, exeFileName);

                  if (!FileExists(exeFileName))

                      return;

                  ShellExecute(NULL, "Open", exeFileName, interfaceString.c_str(), NULL, SW_SHOW);

              }

      }

      1. 参数说明

      见前述说明

      字符串接口为一个字符串,其结构为两部分,即文件名 参数,文法表示为

      FileName.sch[ paramName=paramValue]*

      *表示包含[]中部分零个或多个

      []中部分表示参数,格式为参数名=参数值

      文件名,后缀固定为.sch

        文件名为Windows合法文件名称,可包含路径

        paramName与paramValue均为字母与/或数字组合,本节就本参数进行说明。调用方式见前述说明,本节仅列出参数内容,即ShellExecute(NULL, "Open", exeFileName, interfaceString.c_str(), NULL, SW_SHOW)语句中的interfaceString的内容,[]中的内容表示在本段说明中不关注的内容

     

    1. 文件名

    文件名即FileName.sch,即字符串接口中第一个空格前的内容。DrGraph软件将打开该文件,即,只要DrGraph收到传入参数,则将会打开该文件,用户需要确保该文件存在。

    如,用户调用时传入interfaceString为:

    D:WorkQianTechInstallScriptResourcesGeneralExample红石.sch [….]

    则运行后,DrGraph软件将打开该图形文件

    1. 打开指定脚本

    用户可以通过以下参数要求图形博士软件打开图形后,调用指定名称的脚本并运行之

    ScriptName=abcd

    注意:此处的流程必须存在,否则将没有动作,并提示出错。

    如,用户调用时传入interfaceString分别为:

    D:WorkQianTechInstallScriptResourcesGeneralExample红石.sch scriptName=未命名流程!

    运行过程一个截图界面为:

    1. 指定屏幕

    用户可以通过以下参数指定待显示的屏幕:

    destMonitors=1/2/3/1,2/2,3/1,2,3…

    若用户参数未指定屏幕,则图形博士软件将以上次退出的尺寸位置进行显示。

    其中,序号表示监视器在Windows桌面中的显示序号,可通过显示属性查看各监视器的序号值。

    可以指定多个连续的监视器,则DrGraph将显示在该相应的多个屏幕上。

    如,以下三张图片表示用户调用时传入interfaceString为:

    D:WorkQianTechInstallScriptResourcesGeneralExample红石.sch destMonitors=1,2 [….]

    D:WorkQianTechInstallScriptResourcesGeneralExample红石.sch destMonitors=1 [….]

    D:WorkQianTechInstallScriptResourcesGeneralExample红石.sch destMonitors=2 [….]

    其运行结果分别为:

     

     

    1. 全屏显示

    用户可以通过以下参数指定是否以全屏方式显示界面

    FullScreenFlag=true/false,若不指定,缺省将以非全屏方式显示

    如,用户调用时传入interfaceString为:

    D:WorkQianTechInstallScriptResourcesGeneralExample红石.sch destMonitors=1 FullScreenFlag=true [….]

    D:WorkQianTechInstallScriptResourcesGeneralExample红石.sch destMonitors=2 FullScreenFlag=true [….]

    D:WorkQianTechInstallScriptResourcesGeneralExample红石.sch destMonitors=1,2 FullScreenFlag=true [….]

    显示结果分别为:

     

     

    1. 随机出题

    用户可以通过以下参数要求图形博士软件打开图形(必须为流程图)后,调用指定名称的脚本进行随机出题:

    blankNumber=n1 faultNumber=n2 moveNumber=n3

    如,用户调用时传入interfaceString分别为:

    F:.sch destMonitors=1 blankNumber=5

    原始正确流程图为

     

    1. 合并显示

    AttachFile=A.sch

    A.sch为待合并显示的文件名称

原文地址:https://www.cnblogs.com/drgraph/p/3308777.html