C语言源程序作业完成系统,C语言源程序的自动评判系统

C语言源程序的自动评判系统

·

6 ·

Co mpu e a N o 4 01 tr Er . 2 0

C五吉程序的自动评判系统 =源口I== I

余梓唐

(义乌工商学院计算机系,浙江义乌 32 0) 20 0

摘要:自动评判系统为通过编译 c语言源程序生成的可执行程序创建进程,输入适当的测试数据,对输出结果与预设答案进行比较和评判。提出了通过匿名管道进行数据输入输出的实现方法,分析了自动评判机制中的主要问题及解决

方法,点对分级评判进行了探讨,而提出了四级评判机制。重进

关键词:自动评判系统;C语言源程序;匿名管道;分级评判

Au o Sc r ng Sy t m o C ng g So c Pr g a t - o i se f r La ua e ur e orm

YU—a g zit n

( iuId sil& C mm rilC l g.Yw,Z ein 2 0 0 hn Yw n uta r o eca ol e iu hjag 3 2 0,C ia) e

Absr c: Th a t—c rn s se c e ts h po e s o te x c tb e ta t e u o so g Y tm i rae te rc s f r h e e u a l prg a g n r td b c mpin C ln u g su c o rm e eae y o lg i a g ae ore

po a r g m, i p t a p o i t e t aa c mp r s t e u p a a r n u s p r pra e t s d t, o a e o t ut d t wi f u t a s r a i e c rn .Th i l me tto t o h t de a l we s nd g v s s o i g h n e mp e n i n me d a h

o a i u o tu tr u h a o y u pp l e s rs ne,te f d t n t u t h o g n n mo s iei i a p/ p n p ee td h ma p o l a d ou in o uo so ig i rb e n ms n s lt s f a t-c r me h n s a e o n c a im r

n l z d h g d d s o g s e h tc l d su s d a o rga e s o g a ay e,te ra e c rn i mp aial ic se d a fu -r d c rn me h nim s p o o e . i y n i c a s

i r p s d

K e r s a t— c rn y t m; C a g a e s u c r g a; a n y wo d: u o s o g s se i l u g o e porm n r no y o s pi e i e;g a e c rn m u p l n r d d s o ig

的通信管道,从通信管道获取编译、连接处理信息。若编译、连则为已生成的可执行程序创建进程,同样可通过管道学生的 c语言程序设计作业通常提交的是电子版源程序,接无误, 输入预设的测试条件,运行源程序后通过管道获取运行结果。 批改这些作业是件很费时的工作。教师需阅读、批改每一个源接下来只要对运行结果与正确答案进行匹配检查,决定其正确程序,工作繁重且重复。另外,阅读源程序去判断作业的通过 正确性还容易出现误判,测试某些边界条件下程序的稳健性也与否。

0引言

很因难,易漏判。根据 c语言程序设计学生作业的特点,容一种较好的批改方法是给定输入条件,然后直接运行程序,通过

11匿名管道 .

管道是进程通信用的共享内存的一部分。有两种可用于

匿名管道和命名管道。其中匿名管道常用来重定结果来评判。因此,设计并开发计算机自动评判系统来处理学通信的管道:向子进程的标准输入或输出,利用匿名管道子进程就可以与其生提交的 C语言源程序作业不失为一种好的解决方案。 I ra ie e本文介绍的自动评判系统能快速地批改学生作业,并把批父进程交换数据。利用 AP函数 CetPp可以创建一个匿名管道,建成功后函数会返回两个句柄:创管道读旬柄和管道写改结果写入数据库,教师能很方便地从宏观上了解学生掌握的

写句柄对管道只有只写权 整体情况,必要时也可有针对性地对错误程序再进行手工检句柄。读旬柄对管道只有只读权限,限。比如,子进程可使用管道的写句柄向管道写入数据,而父查,以了解出错的原因。该自动评判系统的基本设计思想是: 反之在数据库中建立一个以题号为主键,以测试条件、正确运行结进程则可使用管道的读句柄从管道中读取数据;亦然。但必须创建两个匿名管道。 果、评判等级等信息为字段的表,以此表中的数据作为评判标如果要双向通信,准;调用 v+系统提供的编译 ( L X ) c+ C . E和

连接 (IKE E E LN . ) X程序,对提交的 c源程序进行编译和连接检查;检查通过后从数据库读入相应的测试条件并运行程序,得到运行结果,运对行结果按评判等级的要求与正确运行结果作比较,出批改结得

B O e= rae ie& Pp Ou u e d/返回读句柄 O L rtC e tPp ( h i e t t a, p R/

&h ie t u Wr e/ P p Ou p t i . I返回写句柄 t

&a s,

O: )

I I安全属性参数

,,管道缓存大小设为缺省值

其中,是 S C R T _ T R B E结构变量, s a E U I Y A T I UT S用于设置安全果;最后把编译和连接是否出错、有几个错误或警告、结果运行描述符及新建进程能否继承读写句柄。将 http://doc.docsou.comad设 a l rH nl bhi e是否正确等信息存入数据库中。 置为 T U, R E则让新进程继承该句柄。

1源程序的处理

在编译和连接时,自动评判进程只要创建一个匿名管道对 C言源程序的处理,语首先通过调用 v+系统提供的用于与编译或连接子进程问信息的单向传递, R aFl函 c+利用 ed i e

编译 ( LE E) C .X和连接 ( r .X程序完成。由于这两个程 LNKE E)

数通过管道的读句柄读取编译或连接情况的信息。而在运行序是控制台程序,们能将编译、它连接处理的结果输出到控制程序测试时,由于需要输入测试条件,则需创建两个匿名管道台。为了能将控制台输出的编译、连接相关信息传入自动评判用于信息的双向传递:一个用于输入测试条件,入数据可用输

系统的进程,可创建评判进程与 C .x ( LNK.xE进程问 Wre i函数通过管道的写句柄写入; LE E或 I E ) iFl t e另一个用于获取运行

1-1976-png_6_0_0_0_0_840_1162_840.96_1162.8-1430-0-0-1430.jpg

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值