网站大量收购闲置独家精品文档,联系QQ:2885784924

C#控制台程序智能评阅算法的设计与实现.docVIP

C#控制台程序智能评阅算法的设计与实现.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C#控制台程序智能评阅算法的设计与实现.doc

C#控制台程序智能评阅算法的设计与实现   摘 要:针对C#面向对象程序设计无纸化考试中主观题的自动评阅问题,提出了一种基于正则表达式的智能评阅算法。该算法模拟了人工阅卷的过程,综合考虑了程序设计主观题中的语法分、结果分以及知识要点分,最终给出了较为合理的得分。实例计算结果表明,该算法是高效可行的。   关键词:智能阅卷;正则表达式;无纸化考试;C#编译器   中图分类号:TP312 文献标识码:A 文章编号2012)011004603   ________________________________________   基金项目:常熟理工学院青年教师科研启动基金项目(QZ1107)   作者简介:黄瑜岳(1978-),男,硕士,常熟理工学院计算机科学与工程学院讲师,研究方向为无线传感器网络、算法设计。0 引言   随着计算机辅助处理、网络技术和多媒体技术的飞速发展,越来越多的课程考核都实现了基于网络的无纸化考试。网络无纸化考试系统具有组织方便、不受时间和地域限制、可以快速客观地给出考试成绩和降低考试成本等优点。考试系统中关于选择、判断和填空等主观题的自动阅卷算法只需根据学生的答案与标准答案的匹配结果即可判定得分,算法简单且成熟。然而,程序设计中的主观题由于实现方法的多样性可以具有多种解法,因此,没有唯一的标准答案,即使有,结果的匹配算法也相当复杂,难以实现,给主观题的计算机自动评阅带来了困难。   巨同升学者针对现有C语言程序自动阅卷系统的不足,提出了利用Windows管道技术和创建进程的方法实现C语言程序自动阅卷的思路及实现方法;余梓唐提出了通过匿名管道进行数据输入输出的实现方法,分析了自动评判机制中的主要问题及解决方法。丁卫平等学者针对C程序设计主观题评阅问题,提出了基于阅卷可信度和程序机器智能理解相结合的算法来进行程序设计题评计分数的方法,该方法具有较好的公正性和合理性。   C#是一种优秀的面向对象的程序设计语言,它拥有C/C++和Java等语言的优点,是当前主流的程序设计语言之一。在面向对象程序设计的基础教学中,控制台程序由于简单且运行方便,往往作为主要的练习对象。因此,本文针对C#控制台程序的特点,利用.net自带的csc编译器工作原理,提出了一种基于正则表达式的智能阅卷算法,综合考虑源程序的语法和得分点等,模拟人工阅卷的过程得出较为合理的判分结果。   1 程序设计主观题评阅方法比较   程序设计主观题的评阅主要分人工评阅和计算机自动评阅两种,各有优缺点。   1.1 人工评阅   一般来说,针对程序设计主观题的阅卷,人工阅卷方式受主观因素的影响较大。评阅过程中教师往往是凭借参考答案中的得分点,利用肉眼在学生源程序中查找匹配,效率低下。同时,由于同一功能可采用不同的语句实现,使评判的标准因人而异,缺乏客观性,且容易遗漏。另外,人工评阅方式一般不会考虑程序中存在的语法错误与运行结果是否正确等问题。   1.2 计算机自动评阅   主观题的计算机自动评阅相对人工评阅来说效率高,但目前还没有非常成熟的研究成果,现有自动评阅系统如文献[2]和文献[3],主要是通过调用相应编译器对学生的源程序进行编译运行,可以快速地获得学生程序的编译和运行结果,然后凭借运行结果的正确与否来判定其得分,对于错误结果的源程序只能借助于手工阅卷的方式来实现,显然也是不够理想。   因此,针对像C#这样的程序设计主观题评阅需要设计一种既能考虑得分点和语法分,又具有计算机评阅高效性的自动评阅算法,以获得满意的判分结果。   2 智能评阅算法与步骤   本文智能评阅算法思路是:首先,将获取的学生源代码交给代码预处理模块进行预处理;然后,将经过预处理的代码交给编译运行模块处理,对不能编译、存在死循环以及运行结果不正确的交给得分点匹配模块处理;最后,得出本题学生的最终得分。具体算法步骤如下:   (1)获取学生提交的C#程序代码存入字符变量CSource中。   (2)将CSource进行代码预处理并存入stuf.cs文件中,初始化本题的得分变量score=0。   (3)创建进程Pcsc调用TinyCC的编译程序csc.exe stuf.cs直接运行源文件stuf.cs。   (4)判断编译是否成功,如成功则语法分yf为满分,否则,转9。   (5)通过线程运行stuf.exe文件。   (6)根据题目的类型判断本题是否需要输入参数,如果有,就从数据库获取本题的分值、测试数据testArgs以及测试数据对应的结果信息Tresult,并将测试数据放入进程Pcsc的输入流,否则,只获取本题的测试结果Tresult,转7。   (7)如果在指定的时间(1s)之内没有获得运行结果,那么,

文档评论(0)

lmother_lt + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档