您的位置:首页 > 其它

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

2013-09-08 20:43 281 查看
 

 

 


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

 

 

概述

结构

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

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

准备工作

在目标计算机上安装DrGraph软件,并注册

在C盘根目录下创建1.sch文件

将考试题库中相应的库文件拷贝到安装目录

编辑安装目录下的cbw.graph.cfg,根据三屏投影大屏最左端屏幕的左端位置,确定UIConfig节点中的StartMonitorIndex的属性值,缺省为0,表示起始的屏幕号。



使用流程

用户提前出题,保持在服务端

考试时,控制端从服务端读取题目并展示

考生作答

评委评分

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

用户出题时,需按规范格式出题

控制端相关逻辑
解析判断:若解析判断为图形相关题目时,需解析出其中的文件名称FileName.sch及参数Params

文件拷贝:拷贝FileName.sch文件(若FileName.files目录存在,也一并拷贝)到目标地址

参数构造:根据逻辑(详见下章)构造出参数,通过ShellExecute调用图形博士

 

接口说明

概述

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










FileName.sch[ paramName=paramValue]*


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


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


文件名,后缀固定为.sch

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

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

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

bool __fastcall IsDrGraphLogic(AnsiString interfaceString) {

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

bool result = pos != 0;

return result;

    }

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

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;

}

考试系统拷贝文件逻辑
拷贝图形博士文件时,首先拷贝文件,若存在对应的.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);

    }

}

 

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

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);

        }

}

参数说明

见前述说明

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










FileName.sch[ paramName=paramValue]*


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


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


文件名,后缀固定为.sch

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

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

 

文件名

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

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

D:\Work\QianTech\Install\ScriptResources\GeneralExample\红石.sch [….]

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



打开指定脚本

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

ScriptName=abcd

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

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

D:\Work\QianTech\Install\ScriptResources\GeneralExample\红石.sch scriptName=未命名流程!

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



指定屏幕

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

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

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

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



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

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

D:\Work\QianTech\Install\ScriptResources\GeneralExample\红石.sch destMonitors=1,2 [….]

D:\Work\QianTech\Install\ScriptResources\GeneralExample\红石.sch destMonitors=1 [….]

D:\Work\QianTech\Install\ScriptResources\GeneralExample\红石.sch destMonitors=2 [….]

其运行结果分别为:



 



 



全屏显示

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

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

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

D:\Work\QianTech\Install\ScriptResources\GeneralExample\红石.sch destMonitors=1 FullScreenFlag=true [….]

D:\Work\QianTech\Install\ScriptResources\GeneralExample\红石.sch destMonitors=2 FullScreenFlag=true [….]

D:\Work\QianTech\Install\ScriptResources\GeneralExample\红石.sch destMonitors=1,2 FullScreenFlag=true [….]

显示结果分别为:





 



 

随机出题

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

blankNumber=n1 faultNumber=n2 moveNumber=n3

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

F:\.sch destMonitors=1 blankNumber=5

原始正确流程图为

 

合并显示

AttachFile=A.sch

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: