BNUEP Offline Judge（北京师范大学珠海分校离线评测系统）

本软件支持Windows 2000/XP、Windows VISTA、Windows 7/8/8.1，必须以管理员身份运行。
本软件为绿色软件，无需安装，解压即可运行，基于.Net技术开发，Windows 2000/XP 请在使用前确保系统安装了.Net Framework 2.x或3.x，Windows VISTA、Windows 7可直接运行，Windows 8/8.1请在运行后按提示安装启用.Net Framework 3.5（包括.Net 2.0和3.0）功能。

Microsoft .NET Framework 2.0 Service Pack 2 下载地址：
http://www.microsoft.com/zh-cn/download/details.aspx?id=1639

某些版本的系统在安装.NET Framework前会提示需要安装Windows Installer 3.1：
http://www.microsoft.com/zh-cn/download/details.aspx?id=25


压缩包内文件说明：
BnuepOfflineJudge.exe  本软件主程序；
ICSharpCode.SharpZipLib.dll  本软件调用的组件；
Readme.zh-CN.txt  简体中文帮助文档；
Readme.txt  英文帮助文档；

Compilers文件夹  本软件使用的编译器；
Samples文件夹  例题，测试数据的示例和AC的代码；


主要功能与特点：
1. 在有标准输入和标准输入数据的情况下，无需联网即可提交代码进行判题；
2. 具备所有Online Judge的核心判题功能，如编译代码、内存限定，时间限定，获取代码长度等；
3. 可以打包并加密测试数据，使用加密后的数据可以正常判题，但不显示标准输出；
4. 拥有出题模式，在有标准输入数据和标程的时候可以生成标准输出数据，支持多文件方式的批量保存；
5. 支持使用C、C++、Pascal、C#、Java和Python六种语言编码提交；
6. 支持对代码、标准输入数据和标准输出数据中汉字的处理；
7. 支持不限时执行代码，并可以随时手动跳过当组测试数据或结束测试；
8. 即使程序MLE、RE、Skip、TLE、UserBreak时，仍然可以显示程序已输出的部分内容；
9. 拥有对标准输出数据和程序输出数据的文本高亮对比功能；


关于测试数据： 
1. 使用本软件的前提是必须有题目的测试数据。测试数据包括扩展名为“.in”的标准输入文件和扩展名为“.out”的标准输出文件。
2. 同一道题目的不带扩展名部分的文件名需要完全一致，如Test.in和Test.out被视为同一道题目的测试数据。
3. 支持一道题目对应多个文件的测试方式，但对文件名后缀有严格要求，即多组文件必须以“_两位数字序号”作为后缀，如Test_01.in、Test_01.out、Test_02.in、Test_02.out、Test_03.in、Test_03.out，表示测试题目的名称为“Test”，共有3组测试数据。
4. 不同的题目可以放在同一个文件夹内，不会相互影响。如Test.in、Test.out和Sample.in、Sample.out可以放在同一个文件夹，软件会自动识别出该文件夹内有Test和Sample两道题目；
5. 特别注意的是，“.in”和“.out”文件里的内容一般都要求以一个空行结尾，否则很可能本来AC的程序会被判为PE；


关于获取测试数据的模式：
本软件判题时可以通过两者方式获取测试数据，一种是基于文件目录的方式，一种是基于由本软件制作的专用文件格式，可以通过菜单栏的Options里的相关项进行选择：勾选Directory-based表示基于文件目录方式，勾选File-based表示基于专用文件格式。


关于运行模式：
本软件有两者运行模式，一种是判题模式，一种是出题模式。后者仅能采用基于文件目录的方式获取测试数据，在获取时测试数据时，仅要求该目录有标准输入数据，而判题模式则可以采用以上提到的任意一种方式获取测试数据。运行模式同样可以在菜单栏的“Options”里的相关项进行选择：勾选Judge-mode表示判题模式，勾选Build-mode表示出题模式。


判题模式使用步骤： 
1. 按“Brower”（即打开文件夹的那个图标）按钮选择存放测试文件的目录或程序专用测试数据打包文件，程序会自动在“program”下拉框显示可用的题目名称，接着选择想要提交的题目、选择编译程序的编译器、程序执行的内存限制和时间限制，然后按“Submit”按钮提交代码，支持以拖拽方式提交；
2. 本软件会编译并执行代码（如编译成功），使用标准输入文件的内容作为输入数据，在程序执行完成后会显示判题结果，并将标准输出和程序输出分别放在左右两边的文本框，在窗体下方的状态栏会显示用户程序的内存占用和代码长度。在程序运行的过程中，可按“Skip”按钮跳过当前一组测试数据（多文件方式）或按“Break”按钮中断整道题目的测试。
3. 执行完测试后，可以按“Compare”按钮对标准输出和程序输出进行高亮的差异对比。
4. 对于一道题目对应多个文件的测试方式，可以按“<” 和“>”切换显示每组数据的判题情况，并可在判题后将鼠标指针移动到状态栏查看每组数据的判题信息。
5. 由于硬件差异、判题内核不同等的一些原因，在相同代码和相同测试数据的情况下，本软件运行程序的时间和在Online Judeg运行的时间是有一定差距的，误差在±500MS左右。另外，如果你的机器启动了安全软件的某些监控，会加长判题的时间。


出题模式使用步骤：（只说明和判题模式的差异）
1. 仅能以基于文件目录的方式获取测试数据，测试数据可以仅有.in文件；
2. 运行完成后可以使用“File”菜单的“Save Current Case's Output”和“Save All Case's Output”保存当前测试文件组的程序输出和保存所有的测试文件组的程序输出；


打包测试数据步骤：
1. 选择菜单栏的“File”，然后点击“Pack Test Data”；
2. 按“Browse”按钮选择一个存放测试数据的目录，测试数据的要求和判题模式的要求是一样的，然后按“Search”按钮，软件会自动将符合要求的题目列表显示在“Programs”中；
3. 选择是否加密数据；
4. “Remark”文本框中是对该打包数据的总体描述，但本版本暂时未实现显示该信息功能，仅留位；
5. 点“Save”按钮保存，OK。


使用Java的配置步骤：
1. 下载JDK，注意是JDK，不是JRE，本系统支持JDK 1.4+版本。以下是Oracle官网最新版JDK的下载地址：http://www.oracle.com/technetwork/java/javase/downloads/index.html
2. 配置Path路径，在Path中加入JDK的bin目录，注意需要用;将前面的值分割开。详细的安装配置步骤可以参考以下1.8版本的链接，其他版本类似：http://docs.oracle.com/javase/8/docs/technotes/guides/install/windows_jdk_install.html
3. 在某些机器上需要重新启动；
4. 安装配置完毕后，运行BNUEP Offline Judge，在Language下拉框中就可以看到javac选项了。


Java代码书写注意事项：
1、所有的类必须写在一个文件里，同时，必须有一个类的里面包含一个名字为“main”的静态方法，这个方法是程序的入口；
2、如果将主类声明为public，则这个类名必须是“Main”；
3. 注意以上两条中的大小写；
4. 示例代码请参看Sample文件夹；


使用Python的配置步骤：
1. 下载Python，本系统支持Python 2.x和Python 3.x，以下是Python官方网站的下载地址：https://www.python.org/downloads/
2. 配置Path路径，在Path中加入Python.exe所在目录，注意需要用;将前面的值分割开。
3. 在某些机器上需要重新启动；
4. 安装配置完毕后，运行BNUEP Offline Judge，在Language下拉框中就可以看到python选项了。


判题结果：
Accepted 测试通过；
BuildModeResult 出题模式正常结束的结果
CompileError 编译失败；
CompilerDamage 相关语言的编译器损坏；
MemoryLimitExceed 内存超出限制；
NotRun 未进行测试；
PresentationError 格式错误；
RE_AccessViolation 运行时错误_非法访问，如数组越界，改写只读的内存；
RE_DivisionByZero 运行时错误_除零；
RE_StackOrHeapOverFlow 运行时错误_栈或堆溢出；
RE_JavaRuntimeError 运行时错误_JAVA专用，无细分类
Skip 用户跳过测试；
SystemError 测试失败；
TestFilesDamage 测试数据文件损坏；
TimeLimitExceed 时间超出限制；
UserBreak 用户中断测试；
WrongAnswer 答案错误；


编译器版本：
gcc:
mingw-w32-bin_i686-mingw_20111101_sezero
With exception of certain parts that are prominently marked as being in the Public Domain, BSD, or LGPL this Software is provided under the Zope Public License (ZPL) Version 2.1.
Copyright (c) 2009, 2010 by the mingw-w64 project
See the AUTHORS file for the list of contributors to the mingw-w64 project.

fpc:
Free Pascal Compiler version 2.2.2 [2008/08/03] for i386
Copyright (c) 1993-2008 by Florian Klaempfl

csc:
Microsoft (R) Visual C# 2005 Compiler version 8.00.50727.1433
for Microsoft (R) Windows (R) 2005 Framework version 2.0.50727
Copyright (C) Microsoft Corporation 2001-2005. All rights reserved.


版本历史：
1.21 (20150116)
1. 增加英文说明文档；
2. 修订界面语言；
3. 其它细节的修改。

1.2 (20150110)
1. 增加对Python的支持；
2. 去除文本高亮对比的行号，增加性能；
3. 其它细节的修改。

1.1 (20140622)
1. 修改gcc编译器为mingw-w32-bin_i686-mingw_20111101_sezero以更好地支持x64系统；
2. 修改了上一组下一组按钮的图标；
3. 其它细节的修改。

1.00 Beta 2 (20100217)
1. 增加对Pascal的支持；
2. 增加代码提交框的记忆功能；
3. 其它细节的修改。

1.00 Beta (20090514)
1. 首次公开发布。


软件作者：林嘉亮
www.linjialiang.net


BNUEP Offline Judge的开发成本非常之高，如果你想支持BNUEP Offline Judge的发展，请根据以下链接的信息捐赠：
http://www.linjialiang.net/donate/


如果您发现BUG，麻烦您发送相关情况至 linjialiang@vip.163.com ，谢谢。
