程序在线评测系统的设计与实现(1)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信息科掌
SI L I C O N
L L E Y■_≯
程序在线评测系统的设计与实现
鲁静轩孙晶李元嵩
(北华大学吉林吉林132021)
[捕要】程序在线评测系统(O nl i n e Judge Syst em)是面向程序设计的源代码自动评测系统.经过扩展可向教学方面转化.提供辅助教学功能.介绍系统主要模块功能及天键技术的实现。
【关键词】O nl i n e j u dge在线评测辅助教学
中图分类号:TP3文献标识码:A文章编号:1571--7597(2008)1220038--01
i、引■
onl i ne Judg e Sys t em是仿照A C M/I CPC比赛模式,拥有自动编泽运行源代码,计时、评分、统计等功能的比赛系统,比赛之余可以将题目整理到题库,提供在线评测功能,供用户在赛后进行练习、切磋等.
在教学领域中,Onl i n e Jud ge的特点可以拟补人工评判的缺点.有效减轻教师负担,使评测更加公平合理,还能让学生在课内未完成的实验可以通过系统在课外的时间完成,这样整个实验过程得到了延伸.
:、曩境设计
(一)系统架构
本系统采用B/S模式(浏览器/服务器模式),B/S模式开发周期短。易于维护、扩展,无需安装客户端,用户可以随时随地在可以连接到
I nt er net的电脑上使用。
(二)开发平台
本系统在W i ndo w s S er ver2003操作系统下,使用H i cr oso f t.NE T cl I语言进行开发。数据库采用M ySO L。
(三)系统分析设计
1.用户模块。用户可以在本系统下注册自己的账号,查找自己提交过的代码。建立、删除、加入群。同其他用户进行比较。
2.题目模块。每道题目有本身的时间及内存的要求,可以查看提交数量及通过的数量。每道题目设置一个讨论区,每个用户也可以针对这个题目给管理员进行留言,并提出疑问。
3.比赛模块。每场比赛要求用户在规定时间内做出题目,比赛结束后,不可以再进行提交。比赛分类:按照公开程度分为pub]i c(任意本系统合法用户均可参加)和pri va t e(拥有进入比赛密码的用户可以参加),按照比赛的建立者分为系统比赛(由管理员建立比赛)和个人比赛(任意本系统的合法用户建立的比赛)。
4.系统功能模块。总排名功能:根据用户总通过题目数量,以及用户通过率对本系统的合法用户进行捧名。月捧名功能:根据当月通过当月用户题目数量,已经当月用户的通过率对当月在本系统提交的用户进行月排名。
5.管理员、教师管理模块。管理员可以添加系统比赛、添加题目、确认教师身份等,教师可以建立作业、确认学生身份,查看作业完成情况等.
(四)数据库设计
根据系统的分析设计.至少需要建立以下表:用户信息表,题目表,比赛表,状态表。
每个应包含以下字段:
1.用户信息表(标识,用户账号,用户密码,用户所属群).
2.题目表(标识,题号,题目名称,时间要求,内存要求.所属比赛,用户提示,题目出处)。
3.比赛表(标识,开始时间,结束时间,是否公开.题目账号).
4.状态表(标识.用户账号,语言种类,提交时间,返回状态.程序用时,程序占用内存.是否属于比赛题目)。
(五)主要功能模块设计
系统最核心的部分是编译运行模块.下面主要介绍编译运行的式及安全策略.
1.c#中的Pr o cess类。编译、运行过程中使用c}I中提供的Pr oce ss类创习建新进程,方法如下:
S y st e m D i agnos t i cs.Pr oces s pr oc es s2n e w Pr ocess():
通过Pr ocess.St ar t l nf o属性设置进程启动信息.主要属性有:
St ar t I nf o.Fi l eN am e设置要启动的程序。
St ar t I nf o.A r gu皿ent s程序启动时使用的命令行参数。
St ar t l nf o.U ser N am e启动进程时要使用的用户名。
St ar t I nf o.Passw or d程序启动时使用的用户密码。
St ar t I nf o.Redi r ect St andar dEr r or是否将应用程序的错误输出写入Pr oces s:St andar dE r r o r流中。
St ar t I nf o.Redi r ect St andar dI nput应用程序的输入是否从Pr o cess::St andar dI np ut流中读取。
St ar t I nf o.R edi r ec t St anda r dO ut put是否将输出写入P r oc e ss=l
St a ndar d O ut pu t流中.
2.编译。系统可以评判C、c++、Java、Pasca l源代码.C/c++的编译器使用G N U组织的G CC/G++、Jav a编译器使用Sun SD K、Pascal编译器使用FPc,通过新建进程调用编译命令完成编译。并捕捉错误输出信息。如果无编译错误,则进入运行阶段,否则返回编译错误信息。
3.运行及安全策略。通过编译的程序将进入运行阶段,这里是整个评测系统的核心部分,由于测试输入、输出都是基于文件的,利用St a r t I nf o.R E di r ect St and ar dl n put、St ar t I nf o.R ed i r ect St and ar dO u t put将输入输出流重定向到文件。对进程进行相应的时间限制、内存限制后,调用St ar t()方法,根据程序输出与标准输出文件的对比,判断程序的对错.并更改数据库中相关内容。
运行用户程序过程中,需要格外注意的就是运行权限的问题。例如,限制用户程序网络使用权限,不能将测试数据通过网路发送出去.限制用户程序非法调用系统函数关机、重启、格式化硬盘等操作。我们采取的方法是,建立单独的用户用于运行用户程序,在用户组中限制用户的网络、文件访问权限等,在St ar t I n f o.U se r N am e、St ar t I n f o.Pas sw or d中设置相应的用户名及密码,经测验此方法可有效的避免上述问题的发生。同时还可以在头文件中将有关危险系统调用函数屏蔽掉.如c/c++中的syst e m()函数.
三、培柬鼍
O nl i ne Judge系统不仅为A C W4/T C PC E3常训练提供了训练平台,而且经过技术扩展,使之参与到实际教学过程中,有效的减轻了教师的负担,同时减少了客观因素对学生成绩的影响.相信oI l l i ne Jud ge系统将会在未来的程序设计类教学中发挥更多的作用.
参考文献:
[1]孙宣东、路璐、明俊峰,从^C l I/I C PC看计算机算法设计教学改革[J].广东工业大学学报(杜会科学版),2005,(s1).
[2]郭炜、李文新,程序设计实习类课程如何准确考查学生学习情况[J】.吉林大学学报(信息科学版),2005.(S2).
[3]何广龙、吴维嘉、何明.利用P盱实现一个基于w eb的试愿系统[J】.甘肃科技纵横。2006.第瓦期:17-18页.
[4]李文新,A O i参赛教练:收获不只是心灵上的[J】.计算机教育,2006.3.69.7l 页.