Cena代码评测软件系列之一:简介

Cena是一个离线代码评测软件,支持.pas,.c,.cpp
等代码的自动评测。这个月学院举办了编程竞赛需要用这个测评,于是我开始鼓捣这个软件。先说下基本操作吧。

一、软件下载安装

据说最新版本是0.8.2,而且已经不再更新了,下载:http://pan.baidu.com/s/1mgj5XUC
先安装0.8.1的setup,安装好后替换cena.exe就变成0.8.2了,其实好像就是1的版本像XP,2的版本好看些。
安装好后就可以打开软件开始使用了,新建比赛:

新建比赛
新建比赛

二、 新建比赛并配置

1.新建比赛后选择第一个选项卡“试题”,右键选择新建,标题任意,源文件最好是英文的,不带扩展名,比如A,那么A.*的文件都会从客户端收取到主机。
输入文件任意但需要记住文件名,比如in.txt,输出文件也是。
比较方式等余下三项默认即可。
2.右击新建的试题添加测试点,测试点就是一组输入输出数据,如果把程序运行时按照输入文件输入后产生的输出和输出文件相同,就认为这个测试点通过了,就可以得到相应的分数。
添加的测试点右边配置:先文件-浏览文件夹-打开data文件夹,按照试题目录组织输入输出的数据,比如测试数据有这么多组:

测试数据的位置
测试数据的位置

然后在右边输入文件树入对应题目的输入文件、输出文件,配置分值。
可以参考cena自带的那个例子比赛。
3.分发客户端。点击工具-分发客户端就可让同一局域网的电脑下载客户端。在主机上cmd里输入ipconfig查看对应局域网的主机地址,然后客户机输入这个地址和端口就可下载cena的客户端了,安装好和,会在主机选项卡2(选手)里面显示。
4.客户端(选手)要做的事。新建工作目录(右击任务栏cena客户端图标-选项里面显示的工作目录),把对应题目的源文件全部保存在工作目录里面,比如,如果配置了两题,源文件分别为A、B那么要是客户端选择c++就要把A.cppB.cpp都放在工作目录里,然后主机点收取,就会把源文件收取上来。(存放在比赛目录下的src/选手名/目录下)
5.评测。这样之后你评测会出现一个问题,评测结果是无输出。因为程序要从输入文件读取数据,而选手的程序是从标准输入读入,所以,暂时的解决方法就是比赛时声明统一在main函数第一句添加重定向语句

freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);

其中in.txtout.txt是试题(不是测试点)的输入文件和输出文件。
6.他评测的原理就是把源文件复制到临时目录(和新建比赛时同一级目录),把测试数据复制到临时目录里的输入文件,把输出存在临时目录的输出文件,再把输出和测试数据的输出对比。

三、问题

1.Win8可能评测不了c\c++,貌似是因为cena安装的编译器不完全,在工具-选项-编程语言选项里把C++的编译命令替换为你安装的其他IDE的编译工具g++。但参数不需要改变(尽量使用C++不要使用C)

编译选项设置编译命令
编译选项设置编译命令

2.不能编译JAVA文件。上面第6条说的把源程序代码复制到临时目录时它会随机地改个名字,这样JAVA的主类必须要和文件名一样,编译就会报错,这个问题请看下一篇文章解决。


“Cena代码评测软件系列之一:简介”的4个回复

Loading...

发表评论

电子邮件地址不会被公开。 必填项已用*标注