程序设计语言在线测评系统设计与开发

来源 :科协论坛·下半月 | 被引量 : 0次 | 上传用户:zzggwd
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:针对于计算机语言教师阅读与调试程序工作量大的问题,借助于计算机工具,设计并实现一套程序设计语言在线评测系统,以减少教师对程序评测的工作量并提高学生的学习效率。
  关键词:在线 程序设计 评测 系统
  中图分类号:TP311.51 文献标识码:A 文章编号:1007-3973(2013)003-065-02
  1 引言
  如今计算机技术发展迅速,计算机已经成为了人们在日常生活和工作中不可缺少的一种现代化工具。而要想充分的利用计算机的高效处理能力,程序设计就显得尤为重要。在高校中,很多专业都开设的有程序设计课程,要求学生具备一定的程序设计能力,以便能够借助于计算机这种现代化工具解决一些学习和工作中遇到的实际问题。因而学好一门计算机程序设计语言,具备一定的程序设计能力已经成为现代大学生必不可少的一种技能。在学习计算机程序设计语言时,学生们往往要编写大量的程序,教师要对学生们所编写的每一个程序进行调试运行,以便指出并纠正学生们在程序设计中出现的一些错误。从学生提交程序开始,到教师编译、调试,运行,到最后对程序做出评价结果。每一个阶段都是一个非常繁琐的过程,学生提交的程序越多,教师在程序设计评测过程中所花费的时间和精力就越多,大大增加了教师的工作量。
  设计一套在线的程序设计与评价系统,可以让学生们在线进行程序设计,并能通过网络直接提交给系统,由系统对学生们提交的程序自动进行编译运行,自动反馈编译运行中的错误信息或程序运行的最终评价结果。该系统即方便了学生提交程序,也减少了教师对程序评测的工作量。同时,学生们能通过系统的评测,较快的了解程序设计中所出现的错误,以及时更正,提高学习程序设计的效率。
  2 系统功能设计
  系统以减少教师工作量,提高学生学习计算机程序设计语言的效率为目的,应具有以下功能:
  (1)学生在线答题。
  学生可通过系统页面登录,登录后选择程序试题,在线进行答题并将编写好的程序源程序提交到Web服务器端。
  (2)自动程序评测。
  Web服务器端对学生提交的程序进行在线评测,并给出评测结果。
  (3)在线成绩查询。
  学生可在线查询自己所提交程序的评测结果。
  (4)在线考试与竞赛组题。
  系统可用于平时计算机语言课程的考试与竞赛。考试或竞赛时允许教师指定相应考试题目,学生对教师指定的考试和竞赛题目在规定时间内答题,答题后在线提交并能实时查询自己的答题成绩。
  3 系统总体设计
  整个系统的设计采用B/S(Browser/Server)的模式,开发遵循MVC的三层架构,及底层Model层负责数据模型、中间层Control层负责业务逻辑的处理、高层View层负责用户界面。三个层次功能上相互独立,有益于系统的日常维护及进一步的扩展。
  Browser客户端页面主要用来实现View层,负责用户界面,学生可通过客户端页面进行用户注册、登录以及在线答题和成绩查询;教师则可通过客户端页面进行试题与试题答案和要求的编辑与上传,还可根据考试或竞赛的需要进行试题的组织与编排。
  业务逻辑层主要在Web服务器端能够对数据库中的程序源代码进行读取并生成相应语言的源程序以进行编译运行和评测,并最终给出评测结果,将评测各阶段的数据信息写入数据库中。
  底层的数据模型主要用来保存学生和教师的信息、试题相关信息、学生提交的程序源代码信息、学生程序在服务器端的编译运行信息,以及学生最终的程序评测结果信息。
  4 系统详细设计
  根据系统的功能需要和总体设计,系统的详细设计主要分为以下几个模块:
  (1)用户注册与登录模块。
  学生或教师可通过系统进行注册,注册后不同身份对系统有不同的权限,如学生可在线答题,而教师可在线试题录入与编辑。
  (2)学生在线答题与成绩查询模块。
  程序试题按不同难度级别进行分类,学生可根据自己的学习程度选择不同难度的试题。选题后,学生可选择不同的计算机程序语言来进行具体实现,实现后学生通过系统页面将编写好的源程序代码直接提交给Web服务器。
  待服务器端对程序做出评测结果后,学生可在线访问服务器端数据库中的评测信息与结果。如果没有编译通过,学生能查询到未通过编译的错误信息,可进一步修改程序后再次提交;如果通过了编译,学生可查询自己的程序是否执行正确以及程序运行的效率程度和最终的评测结果。
  (3)程序在线评测模块。
  学生在线答题的程序源代码提交到Web服务器端的数据库。在Web服务器端运行着一个守护线程,该守护线程不断检测提交到数据库中的源程序代码,一旦检测到尚未评测的代码,守护线程自动将该程序代码从数据库中读取出来,根据学生所选的计算机程序语言类别建立相应的源程序文件,并在Web服务器端调用相应的计算机语言编译环境进行源程序的编译,将编译时的编译信息写入数据库。若编译错误,则将编译时的错误信息写入数据中,可在线反馈给学生;若编译正确则进入程序运行测试阶段。运行测试时,需从数据库中读取该试题的测试数据,一般有三到五组的测试数据,一一代入编译后的程序中进行测试运行,运行后将每次运行的结果与运行时所花费的时间复杂度与空间复杂度记录到数据库中,并将每次运行的结果与数据库中该试题的正确结果进行比对,以判断该程序是否运行正确。进一步判断程序每次运行的时间复杂度与空间复杂度是否在该试题规定的时间复杂度与空间复杂度内,以确定该程序的运行效率是否达到试题的规定要求。系统将根据程序运行的正确程度以及运行效率给出不同的评测等级结果。
  (4)教师试题录入与编辑模块。
  教师在客户端页面录入并编辑试题更新到服务器端的数据库中,完成试题的编制工作。   5 开发与实现
  使用Eclipse开发工具,综合Spring技术、Hibernate技术,数据库使用MySQL,系统整体部署在Tomcat服务器,所有开发工具、数据库、服务器、框架全部为开源的免费软件,并且根据各个软件的授权协议进行使用。系统功能,构建具有良好的扩展性、开放性的系统,易于维护,升级方便。
  底层使用Hibernate框架访问数据库,主要的类有BaseDao。BaseDao为所有DAO的父类,使用了泛型。BaseDao定义了数据库操作的常用方法,子类只需继承便可使用对应的方法,因为使用了泛型,所以更新操作的返回值为各个实体类Entity,返回的Entity向上层提供给Service进行业务逻辑处理。
  数据库表所对应的类为实体类,一个实体类进行数据库的映射,默认自动对应的数据库表是和类名同名的数据表,如果数据库表和类名不同名可以设置@Table(name="users")进行映射。同样数据库字段名默认情况下是和类的属性名同名的,如果不同名可用@Column(name="user_id")进行映射设置。@Id说明该属性对应的字段为数据库主键。
  Service为业务逻辑层,通过Spring的依赖注入,注入不同的DAO,进行数据库操作。DAO返回给Service的是Entity,在service的不同方法里面通过DataTransferUtil类进行转换,转换为页面需要的域模型Domain,提供给上层。
  6 总结
  该系统的设计可完成在线计算机程序设计的评测工作,一定程度上减少了教师阅读程序和调试程序的工作量。但在程序效率的评测上还不够精确,这取决于程序运行时的时间复杂度与空间复杂度的测定算法,系统中该算法的应用尤为重要,应着重设计实现。
  (2012年河南省信息技术教育研究项目 ITE 12165)
  参考文献:
  [1] (美)威尔顿,麦可匹克.JavaScript入门经典(第3版)[M].施宏斌,译.北京:清华大学出版社,2009.
  [2] (美)Marty Hall,Larry Brown.Servlet与JSP核心编程(第二版)[M].赵学良,译.北京:清华大学出版社,2004.
  [3] 孙卫琴.精通Struts:基于MVC的Java Web设计与开发[M].北京:电子工业出版社,2004.
  [4] 张孝祥.Java就业培训教程[M].北京:清华大学出版社,2003.
  [5] 王国辉,李立文,杨亮.JSP数据库系统开发完全手册[S].
  [6] 陈鹏,程勇.J2EE项目开发实用案例[M].北京:科技出版社,2006.
  [7] (美)Bruce Eckel.Java编程思想[M].陈昊鹏,译.北京:机械工业出版社,2007.
  [8] 赵元杰.Oracle 10g系统管理员简明教程[M].北京:人民邮电出版社,2006.
  [9] 程伟,汪孝宜.开发者突击:JSP网络开发经典模块实现全集[M].北京:电子工业出版社,2008.
其他文献
摘 要:目前,无论在我国还是欧美和日本等国家,对钢筋混凝土梁柱节点的应用和推广都越来越广泛。针对梁柱节点的性质进行系统而深入的研究,掌握其结构性能,并充分应用于工程实践中是必要的。通过对钢筋混凝土梁柱节点的受力特性和节点处的钢筋锚固进行分析,总结得出不同钢筋混凝土梁柱节点处钢筋锚固的各自方法和技巧,并认为通过提高核心截面的有效验算宽度和正交梁的约束系数等可以提高钢筋混凝土梁柱节点的抗剪能力。并且,
摘 要:随着电力需求结构的变化,与之对应的通信方式也逐渐变化、增加,如载波到光纤。因此,网络的结构变得日益复杂,所需管理的信息量也日渐增加。将新技术,新思想融入通信管理中,实现经济,高效化尤为重要。  关键词:调度自动化 通信 管理  中图分类号:TP27 文献标识码:A 文章编号:1007-3973(2013)003-042-02  1 引言  电力工业在我国现代化建设中有着举足轻重的作用,电力
摘 要:在现如今国家经济快速发展的状况下,各类电气的自动化应用也在逐渐走向成熟,例如在供电、高铁等领域中的应用,但各类电气在自动化技术上也存在一些缺点,致使电气系统在经济性上受到了一定程度的影响,而无功补偿技术恰好是针对这些缺点实行的改进型的应用。就无功补偿在电气化中的应用重要性作大致的论述,并提出无功补偿技术的具体应用形式,以期对我国的电气化发展提供可供参考的意见和建议。  关键词:电气自动化
在热力发电厂的生产中,励磁控制系统起着至关重要的作用.端相电压,并且控制发电机无功功率的大小、功率负荷和电流等重要的经济参数.励磁系统所控制的几个部分(或称励磁控制
摘 要:热设计在星载电子设备中占有极其重要的地位。采用热分析软件模拟印制电路板在工作环境温度条件下热控前后的热场分布情况,根据分析结果对热控措施的有效性作出评价。  关键词:印制板 热设计 热分析  中图分类号:TN402 文献标识码:A 文章编号:1007-3973(2013)003-047-02  1 引言  对星载电子设备而言,不仅要求体积小、重量轻、可靠性高,而且要能适应较大温差范围的星内
摘 要:以工程机械再制造为视角,重点研究工程机械再制造产业在中国发展的可行性,及其对中国绿色经济实现的促进作用;最后综观该产业特点,得出国家导向、企业全面参与是关键。  关键词:工程机械 再制造 绿色经济 资源  中图分类号:TH16 文献标识码:A 文章编号:1007-3973(2013)003-041-02  1 概述  再制造是指以产品全寿命周期设计和管理为指导,以优质、高效、节能、节材、环
摘 要:利用UG软件建立轴流泵叶片的三维模型,采用ANSYS CFX软件计算得到叶片上下表面的水压力分布,通过ANSYS Workbench软件强大的耦合分析功能将水压力加载到叶片有限元模型上,最后利用ANSYS软件进行求解计算,得到应力分布结果,根据第三强度理论做应力评定。  关键词:轴流泵 UG 流固耦合 应力分析  中图分类号:TH312 文献标识码:A 文章编号:1007-3973(201
摘 要:随着临海建筑越来越多,临海的深基坑工程也会越来越多,所以如何在临海复杂地质条件下进行深基坑支护,成为国内外专家亟待解决的问题。青岛地质条件复杂,且为临海区域,使用的支护止水方式需要与之地质条件相适应才可施工。为此,研究结合青岛某临海深基坑工程的实践,对高透水性抛石、碎石层旋喷桩等关键技术和综合技术进行技术分析,为临海地区深基坑支护提供参考。  关键词:深基坑 高透水性 旋喷桩 基坑支护  
摘 要:就机床维修阶段中存在的影响因素展开探讨,分析人员以及物质因素影响,并制定科学有效的维修故障策略。对提升机床维修水平,科学处理故障问题,延长机床应用寿命,有积极有效的促进作用。  关键词:机床 维修 影响因素  中图分类号:TG659 文献标识码:A 文章编号:1007-3973(2013)003-051-02  1 前言  机床为重要的设备服务装置,其发挥了价值化功能与重要作用,因此人们注
摘 要:结合流域集控中心计算机监控系统的实际建设经验,对在水电站群远程集中控制发展趋势下,计算机监控系统的内部结构搭建、流域监控数据网组网方式、横纵向二次安全防护等方面的问题进行探讨,并提出相应的解决方案。  关键词:流域集控中心 监控系统 网络结构 二次防护  中图分类号:TP277 文献标识码:A 文章编号:1007-3973(2013)003-057-03  1 引言  随着我国水电开发的不